2019独角兽企业重金招聘Python工程师标准>>>
这几天用到了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;
}
});
}