当 SearchView 可见时,如何监听 ActionBar 导航按钮的点击事件?
How do I listen for click events for an ActionBar nav button when a SearchView is visible?
我正在尝试捕获 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
。再次点击会触发上面的回调。
这对我来说不够好。我的 activity(从 ActionBarActivity
扩展而来)专用于搜索,因此关闭 SearchView
没有意义。我只想在第一次点击时将用户导航到那里。 (请不要评论 UX 或 "why" 我想更改默认行为。我有一个规范要遵循!)
提前致谢...
要知道用户何时关闭 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;
}
我正在尝试捕获 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
。再次点击会触发上面的回调。
这对我来说不够好。我的 activity(从 ActionBarActivity
扩展而来)专用于搜索,因此关闭 SearchView
没有意义。我只想在第一次点击时将用户导航到那里。 (请不要评论 UX 或 "why" 我想更改默认行为。我有一个规范要遵循!)
提前致谢...
要知道用户何时关闭 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;
}