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