( 工具)带有删除功能的EditTex
来源:互联网 发布:淘宝nb旗舰店是真的吗 编辑:程序博客网 时间:2024/06/05 07:52
import android.content.Context;import android.graphics.Rect;import android.graphics.drawable.Drawable;import android.text.Editable;import android.text.TextWatcher;import android.util.AttributeSet;import android.view.MotionEvent;import android.view.animation.Animation;import android.view.animation.CycleInterpolator;import android.view.animation.TranslateAnimation;import android.widget.EditText;public class CleanEditText extends EditText { private final String TAG = "editText"; private Drawable dRight; private Rect rBound; public CleanEditText(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); initEditText(); } public CleanEditText(Context context, AttributeSet attrs) { super(context, attrs); initEditText(); } public CleanEditText(Context context) { super(context); initEditText(); } private void initEditText() { setEditTextDrawable(); addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void afterTextChanged(Editable s) { CleanEditText.this.setEditTextDrawable(); } }); } public void setEditTextDrawable() { if (getText().toString().length() == 0) { setCompoundDrawables(null, null, null, null); } else { setCompoundDrawables(null, null, this.dRight, null); } } @Override protected void onDetachedFromWindow() { super.onDetachedFromWindow(); this.dRight = null; this.rBound = null; } @Override public boolean onTouchEvent(MotionEvent event) { if ((this.dRight != null) && (event.getAction() == 1)) { this.rBound = this.dRight.getBounds(); int i = (int) event.getRawX(); if (i > getRight() - 1 * this.rBound.width()) { // 点击的位置聚焦 requestFocus(); setText(""); event.setAction(MotionEvent.ACTION_CANCEL); } } return super.onTouchEvent(event); } @Override protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) { if (focused) { CleanEditText.this.setEditTextDrawable(); } else { setCompoundDrawables(null, null, null, null); } super.onFocusChanged(focused, direction, previouslyFocusedRect); } @Override public void setCompoundDrawables(Drawable left, Drawable top, Drawable right, Drawable bottom) { if (right != null) { this.dRight = right; } super.setCompoundDrawables(left, top, right, bottom); } public void setShakeAnimation() { this.setAnimation(shakeAnimation(5)); } public static Animation shakeAnimation(int counts) { Animation translateAnimation = new TranslateAnimation(0, 10, 0, 0); translateAnimation.setInterpolator(new CycleInterpolator(counts)); translateAnimation.setDuration(500); return translateAnimation; }}
阅读全文
0 0
- ( 工具)带有删除功能的EditTex
- 自定义带有删除功能的EditText
- 自定义的带有删除功能EditText
- 带有CheckBox的ListView,实现删除和选中功能
- 删除带有 .. 的文件夹
- 带有标签的流布局,,,实现标签的选中,添加和删除功能....
- 带有上拉加载下拉刷新和可滑动删除功能的ListView的简单实现
- 带有删除按钮的EditText
- 带有筛选功能的Spinner
- 带有一键清空功能的EditText
- 带有一键清空功能的EditText
- 带有倒计时功能的button
- android EditTex的实时保存
- R-Studio功能超强的数据恢复、反删除工具
- 自定义带有删除功能的edittext实例,在登录,搜索等地方经常用到可以直接用
- 自定义带有删除功能的edittext实例,在登录,搜索等地方经常用到可以直接用
- 【SVN命令】删除带有@的文件
- 带有删除线下划线的textview
- 06.05 | 极乐周报#No.1(微信小程序)
- 史上最简单的 SpringCloud 教程 | 第十四篇: 服务注册(consul)
- 消费者生产者模型
- springMVC中对日期的格式化
- jquery click()方法模拟点击事件对a标签不生效的解决办法
- ( 工具)带有删除功能的EditTex
- Kotlin基础教程-接口
- 多线程——详细总结
- 为什么新人不会编程
- 前台向后台发送下载文件请求时出现400错误
- angular-cli修改端口号
- 两幅图像间的精确对比
- 安装和启动gogs,自定义的git仓库
- Java线程安全队列Queue