Android EditTet TextView中drawable的点击事件

1. 在xml中定义控制

drawableRight 图片就用的是系统自带的啦

2.在MainActivity中 获取控件

et= (EditText) findViewById(R.id.et);

3.给控件添加onTouchListener事件......

et.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
    //控件对象.getCompoundDrawables()是用来获取控件drawable的
   //四个方向的图片,返回的是一个Drawable数组,其顺序是顺时针,left,
    //top......
 final Drawable[]drawables=et.getCompoundDrawables();
       //我获取的是drawableRight,所以下标是2
 Drawable drawableRight=drawables[2];
        if(drawables==null){
            return false;
        }
   //判断触摸坐标 event.getX()要>图片的左边,<图片的右边
/*
et.getWidth()  控件.getWidth()获取整个控件的宽度
drawableRight.getIntrinsicWidth() 图片.getIntrinsicWidth()获取图片的宽度
et.getPaddingRight() 获取控件的右边距
*/

  if ((event.getX()> et.getWidth()-drawableRight.getIntrinsicWidth()- et.getPaddingRight())&&(event.getX()< et.getWidth()- et.getPaddingRight())){//这里就是写点击事件了.....
// Toast. makeText(MainActivity. this, "sucess" ,Toast. LENGTH_SHORT).show() ; } return false; }}) ;


总结  : 以上只是针对EditText的drawableRight ,同样可以类推TextView..... 同样也可以自定义EditText  重写onTouchEvent方法。



你可能感兴趣的:(Android EditTet TextView中drawable的点击事件)