处理edittext中的drawable点击事件?

import android.content.Context;

import android.graphics.Rect;

import android.graphics.drawable.Drawable;

import android.util.AttributeSet;

import android.view.MotionEvent;

import android.widget.EditText;



public class CustomEditText extends EditText

{

    private Drawable dRight;

    private Rect rBounds;



    public CustomEditText(Context context, AttributeSet attrs, int defStyle) {

        super(context, attrs, defStyle);

    }

    public CustomEditText(Context context, AttributeSet attrs) {

        super(context, attrs);

    }

    public CustomEditText(Context context) {

        super(context);

    }



    @Override

    public void setCompoundDrawables(Drawable left, Drawable top,

            Drawable right, Drawable bottom)

    {

        if(right !=null)

        {

            dRight = right;

        }

        super.setCompoundDrawables(left, top, right, bottom);

    }



    @Override

    public boolean onTouchEvent(MotionEvent event)

    {



        if(event.getAction() == MotionEvent.ACTION_UP && dRight!=null)

        {

            rBounds = dRight.getBounds();

            final int x = (int)event.getX();

            final int y = (int)event.getY();

            //System.out.println("x:/y: "+x+"/"+y);

            //System.out.println("bounds: "+bounds.left+"/"+bounds.right+"/"+bounds.top+"/"+bounds.bottom);

            //check to make sure the touch event was within the bounds of the drawable

            if(x>=(this.getRight()-rBounds.width()) && x<=(this.getRight()-this.getPaddingRight())

                    && y>=this.getPaddingTop() && y<=(this.getHeight()-this.getPaddingBottom()))

            {

                //System.out.println("touch");

                this.setText("");

                event.setAction(MotionEvent.ACTION_CANCEL);//use this to prevent the keyboard from coming up

            }

        }

        return super.onTouchEvent(event);

    }



    @Override

    protected void finalize() throws Throwable

    {

        dRight = null;

        rBounds = null;

        super.finalize();

    }

}
<com.example.CustomEditText

  android:id="@+id/txtsearch"

  ...

  android:layout_gravity="center_vertical"

  android:background="@layout/shape"

  android:hint="Enter place,city,state"

  android:drawableRight="@drawable/cross"></com.example.CustomEditText>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值