前言:
在日常的开发中因为涉及到用户交互的问题,我们难免会涉及到一些控件的使用,比如输入框EditText,文本显示控件TextView,这些控件都是Google在Android原生的api里面提供给我们开发者用来方便开发的控件,这些控件在一些基本需求的情况都可以满足,但是在用户交互如此注重的时代难免存在一点美中不足,那就需要我们对这些原生的控件进行一些修改,以便于达到我们的需求,话不多说,先上图:
接下来说一说实现步骤,从效果图我们可以看出这是一个输入框,用它来跟原生的EditText对比一下的,可以看见后面多了一个删除的图标,那我们的实现思路为定义一个类继承于原生的EditText然后进行我们需要的处理操作。
步骤一:
定义一个变量来实现后面删除图标的引用以及左,上,下间距的变量:
imgAble = mContext.getResources().getDrawable(R.drawable.delete_img);
drawableLeft = getCompoundDrawables()[0];
drawableTop = getCompoundDrawables()[1];
drawableButtom = getCompoundDrawables()[3];
判断输入框文字的长度,根据长度判断是否显示删除图标
if (length() < 1) {
setCompoundDrawablesWithIntrinsicBounds(drawableLeft, drawableTop, imgInable, drawableButtom);
} else {
setCompoundDrawablesWithIntrinsicBounds(drawableLeft, drawableTop, imgAble, drawableButtom);
}
步骤二:重写onTouchEvent方法实现点击删除图标清空输入框的逻辑
public boolean onTouchEvent(MotionEvent event) {
if (imgAble != null && event.getAction() == MotionEvent.ACTION_UP) {
int eventX = (int) event.getRawX();
int eventY = (int) event.getRawY();
Rect rect = new Rect();
getGlobalVisibleRect(rect);
rect.left = rect.right - 50;
if (rect.contains(eventX, eventY))
setText("");
}
return super.onTouchEvent(event);
}
到这里,一个带清空输入功能的输入框就完成了,欢迎大家一起留言改正其中的不足