SearchView往往需要在关闭的时候清除筛选的数据后加载全部数据,但是oncloseListener在高版本的andorid是不起作用的 ,正确的做法应该是取得searchview中那个close的按钮 即末尾的x按钮,监听点击事件即可
//监听关闭按钮点击事件
final ImageView mCloseButton = mSearchView.findViewById(android.support.v7.appcompat.R.id.search_close_btn);
if (mCloseButton.isClickable()) {
mCloseButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//清除搜索框并加载默认数据
mSearchView.clearFocus();
mSearchView.onActionViewCollapsed();
datas.clear();
loadDatas(app.getDb()); }
});
}
其中clearFocus()和 onActionViewCollapsed()调用是为了让SearchView 关闭 ,如果反复搜索关闭出现输出法中没有搜索按钮的情况,可以在searchView获得焦点的时候调用mSearchView.onActionViewExpanded();即可正常操作
其余的比如通过MenuItem.setOnActionExpandListener在独立使用的时候并没有生效配合toolbar应该是可以的(未验证)