package com.demo.lib.common.widget; import android.content.Context; import android.util.AttributeSet; import android.view.GestureDetector; import android.view.MotionEvent; import android.view.View; import android.widget.EditText; public class ExtendEditText extends EditText { public ExtendEditText(Context context) { super(context); } public ExtendEditText(Context context, AttributeSet attrs) { super(context, attrs); } public ExtendEditText(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } private OnDrawableClickListener mOnDrawableClickListener; private GestureDetector gestureDetector = new GestureDetector(getContext(), new GestureDetector.SimpleOnGestureListener() { @Override public boolean onSingleTapUp(MotionEvent e) { if (getCompoundDrawables()[0] != null && e.getX() >= getPaddingLeft() && e.getX() <= getPaddingLeft() + getCompoundDrawables()[0].getIntrinsicWidth()) { if (mOnDrawableClickListener != null) { return mOnDrawableClickListener.onRightDrawbleClick(ExtendEditText.this); } } if (getCompoundDrawables()[2] != null && e.getX() >= getWidth() - getCompoundDrawables()[2].getIntrinsicWidth() - getPaddingRight() && e.getX() <= getWidth() - getPaddingRight()) { if (mOnDrawableClickListener != null) { return mOnDrawableClickListener.onRightDrawbleClick(ExtendEditText.this); } } return false; } }); @Override public boolean onTouchEvent(MotionEvent event) { if (gestureDetector.onTouchEvent(event)) { return true; } return super.onTouchEvent(event); } public OnDrawableClickListener getOnDrawableClickListener() { return mOnDrawableClickListener; } public void setOnDrawableClickListener( OnDrawableClickListener onDrawableClickListener) { this.mOnDrawableClickListener = onDrawableClickListener; } public interface OnDrawableClickListener { boolean onRightDrawbleClick(View view); boolean onLeftDrawbleClick(View view); } }