【问题标题】:show navigation drawer on physical menu button在物理菜单按钮上显示导航抽屉
【发布时间】:2014-03-06 09:32:36
【问题描述】:

我想在用户点击物理菜单按钮时显示导航抽屉,我覆盖了菜单按钮,如下所示:

 @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if ( keyCode == KeyEvent.KEYCODE_MENU ) {

                // some code here to show navigation drawer

            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

但是我不知道我应该怎么做才能在这个方法中显示导航抽屉。

【问题讨论】:

  • 你真的不应该这样做,菜单按钮应该总是打开溢出菜单。
  • 我把这件事告诉了领队,但他不听:(

标签: android navigation-drawer


【解决方案1】:

DrawerLayout.openDrawer(Gravity.LEFT) 是您正在寻找的。顺便说一句,我不认为这是一个坏主意,因为很多人还不熟悉抽屉。

【讨论】:

  • 我认为这是一种不好的做法,因为人们通常使用菜单按钮来显示“设置”菜单。
  • 你是对的@Opetmar,菜单按钮应该用于溢出菜单而不是别的。
  • 是的,这有点违反谷歌的指导方针,但由于他们实际上并没有在自己的应用程序中使用这些指导方针......我宁愿让用户满意,而不是谷歌 :)
  • 遵循指南会让用户更快乐,因为这是他们的习惯!为了让用户熟悉抽屉式导航,您可以在用户第一次打开应用时自动打开抽屉式导航栏。
  • 对于 2015 年之后发现这个答案的任何人:现在每个人都知道抽屉是如何工作的,所以我认为没有必要再做这样的黑客了。
【解决方案2】:

好吧,在你的布局中的某个地方你有一个 DrawerLayout,它由你的主视图和你的导航抽屉视图组成。

现在你可以做...

final DrawerLayout drawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout);
final View navigation = ((NavigationDrawer)drawerLayout.findViewById(R.id.navigation_drawer));

if(drawerLayout.isDrawerOpen(navigation)) drawerLayout.closeDrawer(navigation);
else drawerLayout.openDrawer(navigation);

【讨论】:

  • 因为@Ripityom 首先回答了我的问题,所以我不得不接受他的回答,但无论如何谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
相关资源
最近更新 更多