Android带删除的EditText

来源:互联网 发布:淘宝执行运营工资高吗 编辑:程序博客网 时间:2024/03/29 05:23
/** * @author linglongxin24 * 2013-12-04 */public class EditTextWithDel extends EditText {private final static String TAG = "EditTextWithDel";private Drawable imgInable;private Drawable imgAble;private Context mContext;public EditTextWithDel(Context context) {super(context);mContext = context;init();}public EditTextWithDel(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);mContext = context;init();}public EditTextWithDel(Context context, AttributeSet attrs) {super(context, attrs);mContext = context;init();}private void init() {imgInable = mContext.getResources().getDrawable(R.drawable.delete_gray);imgAble = mContext.getResources().getDrawable(R.drawable.delete);addTextChangedListener(new TextWatcher() {@Overridepublic void onTextChanged(CharSequence s, int start, int before, int count) {}@Overridepublic void beforeTextChanged(CharSequence s, int start, int count, int after) {}@Overridepublic void afterTextChanged(Editable s) {setDrawable();}});setDrawable();}//设置删除图片<p>private void setDrawable() {</p>if(length() < 1)setCompoundDrawablesWithIntrinsicBounds(null, null, imgInable, null);elsesetCompoundDrawablesWithIntrinsicBounds(null, null, imgAble, null);} // 处理删除事件    @Override    public boolean onTouchEvent(MotionEvent event) {        if (imgAble != null && event.getAction() == MotionEvent.ACTION_UP) {            int eventX = (int) event.getRawX();            int eventY = (int) event.getRawY();            Log.e(TAG, "eventX = " + eventX + "; eventY = " + eventY);            Rect rect = new Rect();            getGlobalVisibleRect(rect);            rect.left = rect.right - 50;            if(rect.contains(eventX, eventY))             setText("");        }        return super.onTouchEvent(event);    }    @Override    protected void finalize() throws Throwable {        super.finalize();    }}

效果

源码下载

0 0
原创粉丝点击