[Android]文本框实现搜索和清空效果
发布日期:2021-08-26 15:47:16
浏览次数:16
分类:技术文章
本文共 2429 字,大约阅读时间需要 8 分钟。
前言
本文实现的效果:文本框输入为空时显示输入的图标;不为空时显示清空的图标,此时点击清空图标能清空文本框内输入文字。
声明
欢迎转载,但请保留文章原始出处:)
博客园:http://www.cnblogs.com
农民伯伯: http://over140.cnblogs.com
正文
一、实现效果
二、实现代码
监听输入
/** * 动态搜索 */ private TextWatcher tbxSearch_TextChanged = new TextWatcher() { // 缓存上一次文本框内是否为空 private boolean isnull = true ; @Override public void afterTextChanged(Editable s) { if (TextUtils.isEmpty(s)) { if ( ! isnull) { mSearchView.setCompoundDrawablesWithIntrinsicBounds( null , null , mIconSearchDefault, null ); isnull = true ; } } else { if (isnull) { mSearchView.setCompoundDrawablesWithIntrinsicBounds( null , null , mIconSearchClear, null ); isnull = false ; } } } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } /** * 随着文本框内容改变动态改变列表内容 */ @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } };
触摸事件
private OnTouchListener txtSearch_OnTouch = new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_UP: int curX = ( int ) event.getX(); if (curX > v.getWidth() - 38 && ! TextUtils.isEmpty(mSearchView.getText())) { mSearchView.setText( "" ); int cacheInputType = mSearchView.getInputType(); // backup the input type mSearchView.setInputType(InputType.TYPE_NULL); // disable soft input mSearchView.onTouchEvent(event); // call native handler mSearchView.setInputType(cacheInputType); // restore input type return true ; // consume touch even } break ; } return false ; } };
绑定事件
private Drawable mIconSearchDefault; // 搜索文本框默认图标 private Drawable mIconSearchClear; // 搜索文本框清除文本内容图标 @Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.main) final Resources res = getResources(); mIconSearchDefault = res.getDrawable(R.drawable.txt_search_default); mIconSearchClear = res.getDrawable(R.drawable.txt_search_clear); mSearchView = (EditText) findViewById(R.id.txtSearch); mSearchView.addTextChangedListener(tbxSearch_TextChanged); mSearchView.setOnTouchListener(txtSearch_OnTouch); }
代码说明:
1. 为输入框绑定触摸事件(模拟点击事件捕捉)。通过监听点击区域判断是否点击清空图片,如果在该区域并且文本框不为空,则清空文本框。
2. 为输入框绑定文本改变事件监听,根据内容改变动态设置图标显示。
3. 维持清空操作后软键盘状态。
三、参考
1.
四、小图标下载
(右键另存为即可。)
结束
活用好每一个控件的属性、方法和事件能实现很多有意思的效果。欢迎大家交流。
转载:http://www.cnblogs.com/over140/archive/2011/04/25/2026812.html
转载地址:https://blog.csdn.net/weixin_33890499/article/details/90617458 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2024年04月11日 10时16分47秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Electron常见问题 30 - 深度填坑之阴影问题
2019-04-27
Electron常见问题 32 - 窗口右上角显示宽高尺寸信息
2019-04-27
哈士奇不是人,但360真是狗啊
2019-04-27
WebRTC[11]-WebRTC如何通过SDP信息设置音频码率
2019-04-27
Electron理论知识 10 - 源码编译(V9.0)
2019-04-27
ffmpeg去除水印(图片和文字)
2019-04-27
下载指定版本的NDK
2019-04-27
JS扩展运算符(...)那点事儿
2019-04-27
Android路径问题
2019-04-27
Electron常见问题 33 - 如何在VSCode中打断点调试
2019-04-27
将视频文件转码成FLV格式(FFmpeg转封装1)
2019-04-27
Electron常见问题 34 - win7 自定义弹窗下方显示多余的背景内容
2019-04-27
将视频文件转码成MP4格式(FFmpeg转封装2)
2019-04-27
WebRTC[4]-WebRTC中JitterBuffer的运行机制
2019-04-27
Electron常见问题 35 - 窗口ready-to-show事件不能触发
2019-04-27
将视频文件转码成MKV格式(FFmpeg转封装3)
2019-04-27