android edittext drawable,处理EditText中drawable上的单击事件

非常非常好,感谢所有为此次讨论做出贡献的人。因此,如果您不想处理扩展课程的不便,您可以执行以下操作(仅适用于正确的绘图)this.keyword = (AutoCompleteTextView) findViewById(R.id.search);this.keyword.setOnTouchListener(new RightDrawableOnTouchListener(keyword) {

@Override

public boolean onDrawableTouch(final MotionEvent event) {

return onClickSearch(keyword,event);

}

});private boolean onClickSearch(final View view, MotionEvent event) {

// do something

event.setAction(MotionEvent.ACTION_CANCEL);

return false;}

这是基于@Mark答案的裸骨听众实现public abstract class RightDrawableOnTouchListener implements OnTouchListener {

Drawable drawable;

private int fuzz = 10;

/**

* @param keyword

*/

public RightDrawableOnTouchListener(TextView view) {

super();

final Drawable[] drawables = view.getCompoundDrawables();

if (drawables != null && drawables.length == 4)

this.drawable = drawables[2];

}

/*

* (non-Javadoc)

*

* @see android.view.View.OnTouchListener#onTouch(android.view.View, android.view.MotionEvent)

*/

@Override

public boolean onTouch(final View v, final MotionEvent event) {

if (event.getAction() == MotionEvent.ACTION_DOWN && drawable != null) {

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

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

final Rect bounds = drawable.getBounds();

if (x >= (v.getRight() - bounds.width() - fuzz) && x <= (v.getRight() - v.getPaddingRight() + fuzz)

&& y >= (v.getPaddingTop() - fuzz) && y <= (v.getHeight() - v.getPaddingBottom()) + fuzz) {

return onDrawableTouch(event);

}

}

return false;

}

public abstract boolean onDrawableTouch(final MotionEvent event);}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值