处理EditText中drawable上的单击事件

处理EditText中drawable上的单击事件

EditText使用以下XML 在窗口小部件中添加了文本右侧的图像:

<EditText
  android:id="@+id/txtsearch"
  ...  android:layout_gravity="center_vertical"
  android:background="@layout/shape"
  android:hint="Enter place,city,state"
  android:drawableRight="@drawable/cross" />

但我想清除EditText点击嵌入图像的时间。我怎样才能做到这一点?


长风秋雁
浏览 560回答 3
3回答

LEATH

非常非常好,感谢所有为此次讨论做出贡献的人。因此,如果您不想处理扩展课程的不便,您可以执行以下操作(仅适用于正确的绘图)this.keyword&nbsp;=&nbsp;(AutoCompleteTextView)&nbsp;findViewById(R.id.search);this.keyword.setOnTouchListener(new&nbsp;RightDrawableOnTouchListener(keyword)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;boolean&nbsp;onDrawableTouch(final&nbsp;MotionEvent&nbsp;event)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;onClickSearch(keyword,event); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;});private&nbsp;boolean&nbsp;onClickSearch(final&nbsp;View&nbsp;view,&nbsp;MotionEvent&nbsp;event)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;do&nbsp;something &nbsp;&nbsp;&nbsp;&nbsp;event.setAction(MotionEvent.ACTION_CANCEL); &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false;}这是基于@Mark答案的裸骨听众实现public&nbsp;abstract&nbsp;class&nbsp;RightDrawableOnTouchListener&nbsp;implements&nbsp;OnTouchListener&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;Drawable&nbsp;drawable; &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;int&nbsp;fuzz&nbsp;=&nbsp;10; &nbsp;&nbsp;&nbsp;&nbsp;/** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;keyword &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/ &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;RightDrawableOnTouchListener(TextView&nbsp;view)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;super(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;final&nbsp;Drawable[]&nbsp;drawables&nbsp;=&nbsp;view.getCompoundDrawables(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(drawables&nbsp;!=&nbsp;null&nbsp;&&&nbsp;drawables.length&nbsp;==&nbsp;4) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.drawable&nbsp;=&nbsp;drawables[2]; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;/* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;(non-Javadoc) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@see&nbsp;android.view.View.OnTouchListener#onTouch(android.view.View,&nbsp;android.view.MotionEvent) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/ &nbsp;&nbsp;&nbsp;&nbsp;@Override &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;boolean&nbsp;onTouch(final&nbsp;View&nbsp;v,&nbsp;final&nbsp;MotionEvent&nbsp;event)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(event.getAction()&nbsp;==&nbsp;MotionEvent.ACTION_DOWN&nbsp;&&&nbsp;drawable&nbsp;!=&nbsp;null)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;final&nbsp;int&nbsp;x&nbsp;=&nbsp;(int)&nbsp;event.getX(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;final&nbsp;int&nbsp;y&nbsp;=&nbsp;(int)&nbsp;event.getY(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;final&nbsp;Rect&nbsp;bounds&nbsp;=&nbsp;drawable.getBounds(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(x&nbsp;>=&nbsp;(v.getRight()&nbsp;-&nbsp;bounds.width()&nbsp;-&nbsp;fuzz)&nbsp;&&&nbsp;x&nbsp;<=&nbsp;(v.getRight()&nbsp;-&nbsp;v.getPaddingRight()&nbsp;+&nbsp;fuzz) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&&&nbsp;y&nbsp;>=&nbsp;(v.getPaddingTop()&nbsp;-&nbsp;fuzz)&nbsp;&&&nbsp;y&nbsp;<=&nbsp;(v.getHeight()&nbsp;-&nbsp;v.getPaddingBottom())&nbsp;+&nbsp;fuzz)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;onDrawableTouch(event); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;abstract&nbsp;boolean&nbsp;onDrawableTouch(final&nbsp;MotionEvent&nbsp;event);}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android