我试图抓住ActionBar
中导航按钮的点击事件。此方法捕获大多数点击次数:
@Override
public boolean onOptionsItemSelected(MenuItem menuItem) {
if (menuItem.getItemId() == android.R.id.home) {
// Nav button pressed. Do stuff here.
return true;
}
return super.onOptionsItemSelected(menuItem);
}
但是,当SearchView
可见时,不会调用它。在此状态下,点击按钮可关闭SearchView
。再次点击 会触发上面的回调。
这对我来说不够好。我的活动(从ActionBarActivity
延伸)专门用于搜索,因此关闭SearchView
并不合理。我只想在第一次点击时将用户导出。 (请不要评论UX或"为什么"我想更改默认行为。我有一个规范要遵循!)
提前致谢...
答案 0 :(得分:1)
要知道用户何时关闭SearchView
,您可以检查菜单项何时折叠:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
MenuItemCompat.setOnActionExpandListener(menu.findItem(R.id.search_view), new MenuItemCompat.OnActionExpandListener() {
@Override
public boolean onMenuItemActionExpand(MenuItem item) {
//The SearchView is opening
return true;
}
@Override
public boolean onMenuItemActionCollapse(MenuItem item) {
//The SearchView is closing. Do stuff here.
return true;
}
});
return true;
}