[Android]文本框实现搜索和清空效果

简介:

一、实现效果

    

       

二、实现代码 

    监听输入

     /**
     * 动态搜索
     
*/
    
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.  how to block virtual keyboard while clicking on edittext in android?

四、小图标下载

      

    (右键另存为即可。)

本文转自博客园农民伯伯的博客,原文链接:[Android]文本框实现搜索和清空效果,如需转载请自行联系原博主。

目录
相关文章
|
生物认证 开发工具 Android开发
安卓设备签到,还是用视觉智能平台人脸搜索1:N
安卓设备签到,还是用视觉智能平台人脸搜索1:N
187 2
|
Android开发
flutter中实现仿Android端的onResume和onPause方法
flutter中实现仿Android端的onResume和onPause方法
|
8月前
|
XML 搜索推荐 Java
28. 【Android教程】自动补全文本框 AutoCompleteText
28. 【Android教程】自动补全文本框 AutoCompleteText
89 2
|
8月前
|
XML IDE 开发工具
13. 【Android教程】文本框 TextView
13. 【Android教程】文本框 TextView
147 2
|
9月前
|
Android开发
Android通讯录开发之通讯录联系人搜索功能最新实现
Android通讯录开发之通讯录联系人搜索功能最新实现
|
Android开发
Android 中实现模拟搜索的功能详解
Android 中实现模拟搜索的功能详解
115 0
|
Java 测试技术 持续交付
百度搜索:蓝易云【NetMock简介:简化 Java,Android和Kotlin多平台中的HTTP请求测试?】
使用NetMock,您可以在单元测试、集成测试和端到端测试中轻松地模拟和验证HTTP请求和响应,而无需实际发送请求到外部服务。这样可以提高测试的可靠性和可控性,并加快测试执行的速度。无论是在开发过程中还是在持续集成环境中,NetMock都可以帮助您更轻松地进行HTTP请求测试,提高代码质量和稳定性。
77 1
|
Android开发
Android 自动补齐文本框AutoCompleteTextView的使用
Android 自动补齐文本框AutoCompleteTextView的使用
91 0
|
XML Java Android开发
Android 中通过Java代码动态生成EditText视图,并循环遍历EditText取出遍历的ID和文本框的值
Android 中通过Java代码动态生成EditText视图,并循环遍历EditText取出遍历的ID和文本框的值
154 0
|
Android开发
Android 自定义弹窗 附带搜索过滤功能
前两天要求在项目中添加个小功能,今天正好有时间随手写了一个小demo,过程分享给大家。以后如果有此类需求可直接移植使用。

热门文章

最新文章

  • 1
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 2
    Android历史版本与APK文件结构
  • 3
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
  • 4
    当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
  • 5
    APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
  • 6
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 7
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 8
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 9
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
  • 10
    escrcpy:【技术党必看】Android开发,Escrcpy 让你无线投屏新体验!图形界面掌控 Android,30-120fps 超流畅!🔥
  • 1
    android FragmentManager 删除所有Fragment 重建
    15
  • 2
    Android实战经验之Kotlin中快速实现MVI架构
    21
  • 3
    即时通讯安全篇(一):正确地理解和使用Android端加密算法
    24
  • 4
    escrcpy:【技术党必看】Android开发,Escrcpy 让你无线投屏新体验!图形界面掌控 Android,30-120fps 超流畅!🔥
    39
  • 5
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
    122
  • 6
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
    40
  • 7
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    55
  • 8
    Android历史版本与APK文件结构
    148
  • 9
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    46
  • 10
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
    40