自定义Android EditText:带清除功能的EditTextWithDel实现
5 浏览量
更新于2024-09-02
收藏 69KB PDF 举报
"Android开发中,有时需要在EditText输入框右侧添加一个清除按钮,方便用户快速清空输入内容。本文将介绍如何创建一个名为EditTextWithDel的自定义输入框控件,该控件在输入框右侧集成了一个可点击的删除图标,点击后能清除文字并隐藏图标。"
在Android开发中,系统默认的EditText控件并不自带清除输入内容的功能。为了实现这一功能,开发者需要创建一个自定义的EditText子类。在提供的代码示例中,作者创建了一个名为EditTextWithDel的类,继承自EditText,并实现了这一功能。
关键点一:自定义控件
自定义控件是Android开发中的常见需求,它允许开发者扩展或修改系统提供的原生控件。在这个例子中,EditTextWithDel通过重写父类的方法来添加额外的行为。
关键点二:添加删除图标
为了在EditText右侧显示删除图标,我们需要获取并设置Drawable对象。代码中提到了`imgInable`和`imgAble`两个变量,分别代表禁用状态和启用状态的图标。这些图标通常可以通过XML布局文件或代码动态设置。
关键点三:监听删除图标点击
由于无法直接为EditText的右端设置点击事件,因此我们需要通过`onTouchEvent()`方法来模拟点击。在触摸事件的处理中,需要检测用户的触摸位置是否落在了删除图标的区域内。这通常涉及到对触摸坐标与图标位置的计算。
关键点四:TextWatcher的使用
为了实现在输入内容变化时显示或隐藏删除图标,我们可以使用`TextWatcher`接口。当输入框内容为空时,隐藏删除图标;反之,如果输入框有内容,则显示图标。`TextWatcher`的`afterTextChanged()`方法适合在此处使用。
关键点五:自定义逻辑
在`onTouchEvent()`方法中,需要判断触碰点是否在删除图标范围内。如果在范围内,清除输入框的内容,并隐藏图标。这部分代码可能包含如下逻辑:
```java
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
int x = (int) event.getX();
int rightBound = getRight() - getPaddingRight();
int iconWidth = imgAble.getIntrinsicWidth(); // 获取图标宽度
if (x > rightBound - iconWidth && x < rightBound) {
// 清除输入框内容并隐藏图标
setText("");
setCompoundDrawables(null, null, null, null);
return true; // 阻止事件向父View传播
}
}
return super.onTouchEvent(event); // 调用父类的onTouchEvent处理其他触摸事件
}
```
通过以上步骤,我们成功地创建了一个具有清除功能的自定义EditText控件。在实际项目中,可以将这个自定义控件集成到布局文件中,以便在需要的地方使用。同时,为了适应不同的主题和样式,还可以对图标颜色和大小进行定制。
117 浏览量
5660 浏览量
2016-10-26 上传
2020-08-30 上传
2019-07-29 上传
点击了解资源详情
2020-09-02 上传
2021-05-01 上传
2019-07-10 上传
weixin_38543749
- 粉丝: 1
- 资源: 929
最新资源
- C语言数组操作:高度检查器编程实践
- 基于Swift开发的嘉定单车LBS iOS应用项目解析
- 钗头凤声乐表演的二度创作分析报告
- 分布式数据库特训营全套教程资料
- JavaScript开发者Robert Bindar的博客平台
- MATLAB投影寻踪代码教程及文件解压缩指南
- HTML5拖放实现的RPSLS游戏教程
- HT://Dig引擎接口,Ampoliros开源模块应用
- 全面探测服务器性能与PHP环境的iprober PHP探针v0.024
- 新版提醒应用v2:基于MongoDB的数据存储
- 《我的世界》东方大陆1.12.2材质包深度体验
- Hypercore Promisifier: JavaScript中的回调转换为Promise包装器
- 探索开源项目Artifice:Slyme脚本与技巧游戏
- Matlab机器人学习代码解析与笔记分享
- 查尔默斯大学计算物理作业HP2解析
- GitHub问题管理新工具:GIRA-crx插件介绍