自定义EditText实现可以一键删除输入的内容
2015-01-27 10:08
357 查看
public class MyEditText extends EditText { private Drawable dRight; private Rect rRounds; public MyEditText(Context context) { super(context); // TODO Auto-generated constructor stub initEditText(); } public MyEditText(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub initEditText(); } public MyEditText(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); // TODO Auto-generated constructor stub initEditText(); } //初始化EditText private void initEditText(){ setEditTextDrawable(); addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub MyEditText.this.setEditTextDrawable(); } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } @Override public void afterTextChanged(Editable s) { // TODO Auto-generated method stub } }); } //控制图片的显示 private void setEditTextDrawable() { // TODO Auto-generated method stub if(getText().toString().length() == 0){ setCompoundDrawables(null, null, null, null); } else { setCompoundDrawables(null, null,this.dRight, null); } } @Override protected void onDetachedFromWindow() { // TODO Auto-generated method stub super.onDetachedFromWindow(); this.dRight = null; this.rRounds = null; } //添加触摸事件,点击之后出现清空效果 @Override public boolean onTouchEvent(MotionEvent event) { // TODO Auto-generated method stub if((this.dRight != null) && (event.getAction() == 1)){ this.rRounds = this.dRight.getBounds(); int i = (int)event.getRawX(); if(i>getRight() - 4 * this.rRounds.width()){ setText(""); event.setAction(MotionEvent.ACTION_CANCEL); } } return super.onTouchEvent(event); } //显示右侧删除图标 @Override public void setCompoundDrawables(Drawable left, Drawable top, Drawable right, Drawable bottom) { // TODO Auto-generated method stub if(right != null){ this.dRight = right; } super.setCompoundDrawables(left, top, right, bottom); } }
相关文章推荐
- Android demo-->自定义能实现一键删除功能的EditText
- 自定义EditText实现一键删除
- 自定义EditText实现一键删除数据
- 自己实现vector,对于自定义类型可用,可以实现vector的嵌套。功能上目前只实现了插入和删除。
- 实现仿Iphone的带删除按钮的自定义的EditText
- 利用Jqurey写一个输入内容增加并且可以删除,上下移动的标签
- Android EditText 在光标处插入,删除内容(例如可用于表情文字输入控件)
- 如何实现Android4.1语音输入的纠错和一键删除效果
- Qt-QML-ComboBox-自定义,实现状态表示,内容可以动态正价,使用ListModel
- AngularJS,实现输入框失焦添加内容到最前,当数据重复删除原来并显示在数组最前
- 自定义EditText 实现带清空按钮的输入框
- Android自定义EditText,实现分割输入内容效果
- 自定义可以列表输入、点击内容的UiContentView
- 实现输入框右侧圆形X图标删除输入框内容,以及获取焦点消除hint
- Android自定义组件EditText,带清空输入内容图标
- 自定义View实现输入框后附加删除小图标
- Android EditText实现分割输入内容
- 实现一个"可变二维数组",这个二维数组的行数要求用户从键盘输入,每行的元素个数仍由用户从键盘输入. //数组元素值用户可以自定义.最后把二维数组打印出来.不要忘记释放数组内存. /*void main
- jquery实现在一个框中输入内容,点击添加后,在另外一个框中显示出来,且能删除
- android自定义多功能EditText 边框状态和删除内容