- 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的点击事件
最新推荐文章于 2025-07-01 16:08:11 发布
本文介绍如何在Android中使用EditText控件实现密码可见性的切换功能。通过重写onTouchEvent方法并结合getTotalPaddingRight与getPaddingRight方法确定触摸事件是否发生在密码图标上,从而实现在密码和明文之间的切换。
856

被折叠的 条评论
为什么被折叠?



