博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Toolbar SearchView的用法
阅读量:5924 次
发布时间:2019-06-19

本文共 1746 字,大约阅读时间需要 5 分钟。

新建一个menu文件,类容如下:

复制代码

其中orderInCategory代表的是优先级。数字越小,优先级越高。

我用的是androidx,所以是androidx.appcompat.widget.SearchView

如果用的是V7包的话,就把actionViewClass里的类替换为android.support.v7.widget.SearchView

然后在Activity里复写onCreateOptionsMenu方法。

override fun onCreateOptionsMenu(menu: Menu): Boolean {        menuInflater.inflate(R.menu.menu_main,menu)        searchView = (MenuItemCompat.getActionView(menu.findItem(R.id.main_search)) as SearchView).apply {            //监听提交事件            setOnQueryTextListener(object :SearchView.OnQueryTextListener{                override fun onQueryTextSubmit(query: String): Boolean {                    if(!query.isEmpty()){                        //TODO                    }                    return true                }                override fun onQueryTextChange(newText: String) = false            })        }        return super.onCreateOptionsMenu(menu)    }复制代码

如果要实现用户按下返回键后清空SearchView的内容。则需要借助反射。

写两个扩展方法:

fun SearchView.isOpen():Boolean{    val searchAutoComplete: SearchView.SearchAutoComplete = findViewById(R.id.search_src_text)    return searchAutoComplete.isShown}fun SearchView.close(){    val searchAutoComplete: SearchView.SearchAutoComplete = findViewById(R.id.search_src_text)    searchAutoComplete.setText("")    this::class.java.getDeclaredMethod("onCloseClicked").run {        isAccessible = true        invoke(this@close)    }}复制代码

然后复写onKeyDown方法

override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {        if(keyCode == KeyEvent.KEYCODE_BACK){            if(searchView.isOpen()){                searchView.close()                return true            }        }        return super.onKeyDown(keyCode, event)}复制代码

转载于:https://juejin.im/post/5caacfa0e51d452b34424975

你可能感兴趣的文章
iis6 zencart1.39 伪静态规则
查看>>
SQL Server代理(3/12):代理警报和操作员
查看>>
基于事件驱动的DDD领域驱动设计框架分享(附源代码)
查看>>
Linux备份ifcfg-eth0文件导致的网络故障问题
查看>>
2018年尾总结——稳中成长
查看>>
$resource in AngularJS
查看>>
java虚拟机学习笔记 【1】
查看>>
DUBBO笔记
查看>>
nginx php上传大文件的设置(php-fpm)
查看>>
MySQL 运行状态监控方法
查看>>
vs2008中在解决方案资源管理器查看当前打开文件
查看>>
jQuery Lightbox(balupton版)图片展示插件demo
查看>>
Elasticsearch集群的简单搭建
查看>>
SCRT-SSH传输文件
查看>>
Python非常cool的svg格式chart生成库pygal
查看>>
Telnet部署与启动 windows&&linux
查看>>
行列式的乘法定理
查看>>
有1000瓶水,3个瓶子可以再换1瓶,一共可以喝多少瓶?
查看>>
Search in Rotated Sorted Array ||
查看>>
NUC_HomeWork1 -- POJ2067(最短路)
查看>>