这几天用到了android的searchView,想在关闭的时候触发一个事件。
首先看了下,发现有个setOnCloseListener,大喜过望,认为就是它了,结果点了半天没有反应,然后上午搜搜,总结一下无外乎说的以下几种情况:
1 源码里面,实现setOnCloseListener里的close()方法,有一个是清空输入框,也许会和searchView的setOnQueryTextListener接口onQueryTextSubmit(String query)冲突
2 setOnCloseListener只能在3.2下才能有效,而ICS貌似不行
而原生的SeachView 是 (SearchView) menuItem.getActionView();
那么就可以从menuItem入手,看其中有不有什么事件响应,一看,当然有
最后查了下资料,果然是这样,如下:
if (currentVersion >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { menuItem.setOnActionExpandListener(new MenuItem.OnActionExpandListener() { @Override public boolean onMenuItemActionExpand(MenuItem item) { return true; } @Override public boolean onMenuItemActionCollapse(MenuItem item) { //TODO 添加关闭事件 return true; } }); } else { mSearchView.setOnCloseListener(new SearchView.OnCloseListener() { @Override public boolean onClose() { //TODO 添加关闭事件 return false; } }); }
原文:http://my.oschina.net/luozheng/blog/316955