csdn怎么了,上传的代码都是乱的。。。。。。。。。
今天我要自定义一个EditText,主要实现的效果是,没输入字符的时候,后面没有清空按钮,输入的时候,就会出现。不废话,直接上图。
一:效果介绍:
这个效果是不是很酷呢?把它封装成一个类,就不用每次都写了。直接当控件用了。
二:代码
(1)user_definedet.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<EditText
android:id="@+id/user_define_et"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_toLeftOf="@+id/user_define_iv" />
<ImageView
android:id="@id/user_define_iv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:background="@drawable/icon_clear" />
</RelativeLayout>
(2)UserDefineEditText.java
package com.example.userdefinedet; import android.content.Context; import android.text.Editable; import android.text.TextWatcher; import android.util.AttributeSet; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.EditText; import android.widget.ImageView; import android.widget.LinearLayout; public class UserDefineEditText extends LinearLayout implements TextWatcher, OnClickListener { private EditText mEdiText; private ImageView mImageView; public UserDefineEditText(Context context) { super(context); initView(); } public UserDefineEditText(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); initView(); } public UserDefineEditText(Context context, AttributeSet attrs) { super(context, attrs); initView(); } // 初始化视图 private void initView() { View view = View.inflate(getContext(), R.layout.user_definedet, null); mEdiText = (EditText) view.findViewById(R.id.user_define_et); mImageView = (ImageView) view.findViewById(R.id.user_define_iv); mImageView.setVisibility(View.GONE); mEdiText.addTextChangedListener(this); mImageView.setOnClickListener(this); addView(view); } @Override public void afterTextChanged(Editable s) { // TODO Auto-generated metho if (s.length() > 0) { mImageView.setVisibility(View.VISIBLE); } else { mImageView.setVisibility(View.GONE); } } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub } @Override public void onClick(View v) { switch (v.getId()) { case R.id.user_define_iv: mEdiText.setText(""); break; default: break; } } public String getText() { return mEdiText.getText().toString(); } }
(3)使用这个控件的两种方法:
(1)new UserDefineEditText(this);
this:指的是“上下文”
(2)在布局文件中引入:
如:
<com.example.userdefinedet.UserDefineEditText android:id="@+id/userdefineedittext" android:layout_width="wrap_content" android:layout_height="wrap_content" > </com.example.userdefinedet.UserDefineEditText>
源码下载地址:
http://download.csdn.net/detail/zz20104534/6861373