- EditText提供了drawableXXX属性来设置控件的个位置的图片显示,但是没有提供响应的点击事件处理。
- 首先要考虑的问题是如何在java代码中获取点击的范围是否在图标范围内。getTotalPaddingXXX方法提供了包含drawableXXX在内的距离,而getPaddingXXX返回视图距响应方向的距离。所以就可以判断是否在图标内点击。
boolean touchable = event.getX() > (getWidth() - getTotalPaddingRight())&& (event.getX() < ((getWidth() - getPaddingRight())));
- 所以重写onTouchEvent方法,我需要根据当前输入类型来判断是否需要明暗文切换
public boolean onTouchEvent(MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_UP) { if (getCompoundDrawables()[2] != null) { boolean touchable = event.getX() > (getWidth() - getTotalPaddingRight()) && (event.getX() < ((getWidth() - getPaddingRight()))); if (touchable) { if(getInputType()==InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD+InputType.TYPE_CLASS_TEXT){ setCompoundDrawables(null, null, mRightDrawableSelect, null); setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); //view.setText(view.getText().toString()); }else{ setCompoundDrawables(null, null, mRightDrawableUnSelect, null); setInputType(InputType.TYPE_CLASS_TEXT |InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD); } setSelection(getText().length()); } } } return super.onTouchEvent(event); }
- 最好还是通过接口的形式让外部传入相应的点击事件。
EditText添加drawableXXX的点击事件
最新推荐文章于 2023-07-23 17:51:24 发布