Android监听SearchView的展开和关闭事件
@(标签)[Android,SearchView,监听器,zhongzilu,bit100]
最近在做搜索功能,虽然Github上有很多搜索控件的“轮子”,但我想要简单一点,于是使用了Android的SearchView
。
一般在搜索完毕之后,关闭搜索框就应该恢复搜索前的数据,于是想监听SearchView
的关闭事件,在关闭的时候进行恢复之前的显示内容。
首先发现有个setOnCloseListener
,认为就是它了,结果搞了半天没有反应,然后就去查找原因
1 源码里面,实现setOnCloseListener
里的close()
法,有一个是清空输入框,也许会和SearchView的setOnQueryTextListener
接口onQueryTextSubmit(String query)
冲突
2 setOnCloseListener
只能在3.2下才能有效,而原生的SeachView 是 (SearchView) menuItem.getActionView()
;
那就从menuItem
入手,发现了一个设置监听的方法setOnActionExpandListener()
设置监听如下:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
menuItem.setOnActionExpandListener(
new MenuItem.OnActionExpandListener() {
@Override
public boolean onMenuItemActionExpand(MenuItem item) {
//TODO 展开事件
return true;
}
@Override
public boolean onMenuItemActionCollapse(MenuItem item) {
//TODO 关闭事件
return true;
}
});
} else {
mSearchView.setOnCloseListener(
new SearchView.OnCloseListener() {
@Override
public boolean onClose() {
//TODO 关闭事件
return false;
}
});
}
作者:钟子路(zhongzilu)
原文地址: https://zhongzilu.github.io/2016/12/15/Android监听SearchView的展开和关闭事件/