Android监听SearchView的展开和关闭事件

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的展开和关闭事件/

本文总阅读量