实现思路,了解android事件分发机制的小伙伴们都知道,view的事件分发首先会调用dispatchTouchEvent方法,在这个方法中会调用onTouch事件,根据onTouch的返回值(true or false)决定是否继续往下传递,意味着onClick事件的执行是在onTouch之后,并且是否执行是由onTouch返回值决定的。那么对我们来说, 只要在onTouch事件中对点击图片还是点击TextView做出区分,这个问题就迎刃而解了。在 ontouch中事件监听中,我们首先获取当我们手指点击屏幕时候的X轴坐标,然后获取布局中TextView这个控件的宽度和drawableRight(drawableLeft)的宽度,当x轴坐标大于(drawableRight)或者小于(drawableLeft)textview减去控件的宽度的时候就触发点击事件,否则的话就不触发,这样就能实现对drawableRight和drawableLeft的点击触发事件,下面的贴出简单的代码。
public class MainActivity extends Activity {
private EditText et;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et = (EditText) this.findViewById(R.id.et);
et.setOnTouchListener(new OnTouchLi