今天遇到了一个问题,SearchView的关闭事件SearchView.OnCloseListener()死活不起作用,各种百度啊。。。结果百度到一篇,说SearchView.OnCloseListener()只能在安卓3.2以下才有效,晕死,然后照着这篇文章里面的方式改了一下,结果menuItem.setOnActionExpandListener那里又报错有木有。哎,然后又接着百度,
算了,直接贴代码。
这是我一整段创建OptionsMenu和SearchView的代码,包含了关闭和搜索。
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
// TODO Auto-generated method stub
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.menu, menu);
//Select search item
final MenuItem menuItem = menu.findItem(R.id.menu_search);
menuItem.setVisible(true);
SearchView searchView = (SearchView) menuItem.getActionView();
searchView.setQueryHint(this.getString(R.string.search));//设置搜索框的hint
((EditText) searchView.findViewById(R.id.search_src_text))
.setHintTextColor(getResources().getColor(R.color.nliveo_white));//设置搜索框的字体颜色?
searchView.setOnQueryTextListener(onQuerySearchView);//设置搜索事件监听
//监控当searchView关闭时调用事件
//需要对系统版本做判断
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
MenuItemCompat.setOnActionExpandListener(menuItem,
new MenuItemCompat.OnActionExpandListener() {
@Override
public boolean onMenuItemActionExpand(MenuItem menuItem) {
return true;
}
@Override
public boolean onMenuItemActionCollapse(MenuItem menuItem) {
//添加searchView关闭事件
return true;
}
});
} else {
searchView.setOnCloseListener(new SearchView.OnCloseListener() {
@Override
public boolean onClose() {
//添加searchView关闭事件
return false;
}
});
}
mSearchCheck = false;
}
private SearchView.OnQueryTextListener onQuerySearchView = new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String s) {
//点击键盘的搜索之后才进行搜索
return false;
}
@Override
public boolean onQueryTextChange(String s) {
if (mSearchCheck) {
//输入的同时会进行搜索
}
return false;
}
};
。