按下选项菜单按钮时,我希望导航抽屉打开。因此,在我的Sherlock Fragment活动中,我添加了:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
if (!mDrawerLayout.isDrawerOpen(mDrawerLinear)) {
mDrawerLayout.openDrawer(mDrawerLinear);
}
return true;
}
由于某些原因,按下选项菜单按钮时没有任何反应。
否则抽屉工作正常。当按下操作栏上的应用程序图标或我拉动它时,它会打开。 那有什么不对?
答案 0 :(得分:27)
也许您指的是onKeyDown (int keyCode, KeyEvent event)
样品:
@Override
public boolean onKeyDown(int keyCode, KeyEvent e) {
if (keyCode == KeyEvent.KEYCODE_MENU) {
// your action...
if (!mDrawerLayout.isDrawerOpen(mDrawerLinear)) {
mDrawerLayout.openDrawer(mDrawerLinear);
}
return true;
}
return super.onKeyDown(keyCode, e);
}
答案 1 :(得分:10)
上面的答案很好,我只是想补充一些说明(打开/关闭版本):
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_MENU) {
View drawerView = findViewById(R.id.navigation_drawer); // child drawer view
if (!mDrawerLayout.isDrawerOpen(drawerView)) {
mDrawerLayout.openDrawer(drawerView);
} else if (mDrawerLayout.isDrawerOpen(drawerView)) {
mDrawerLayout.closeDrawer(drawerView);
}
return true;
}
return super.onKeyDown(keyCode, event);
}
其中mDrawerLayout
是父活动布局,drawerView
活动布局中抽屉的子视图(列表或smth。)