如何禁用菜单按钮,而操作栏仍然保留?

4

我有一个问题,想要禁用菜单按钮,不希望菜单按钮启用,我通过在onPrepareOptionsMenu函数中返回false来禁用它,但是这隐藏了我的操作栏中的所有操作项,那么如何在不影响我的操作栏的情况下禁用菜单按钮?


你说的是哪个菜单按钮?是硬件菜单按钮吗?还是ActionBar上的溢出(三个竖点)按钮?或者是出现在导航栏旁边的溢出图标,靠近“最近使用”的按钮? - Karakuri
哦,我忘了提到,我的意思是硬件设备。 - rabar kareem
1个回答

7

硬件菜单按钮不受onPrepareOptionsMenu()控制。一般来说,改变硬件按钮的行为不是好的做法,因为用户期望它以某种方式运作(我认为是展开溢出菜单)。

如果你一定要禁用它,你可以在我们的活动中监听按下它的操作,例如:

public boolean dispatchKeyEvent(KeyEvent event) {
    final int keycode = event.getKeyCode();
    final int action = event.getAction();
    if (keycode == KeyEvent.KEYCODE_MENU && action == KeyEvent.ACTION_UP) {
        return true; // consume the key press
    }
    return super.dispatchKeyEvent(event);
}

但是关于else语句呢?我该返回什么?false还是true? - rabar kareem
错误。返回 true 会消耗掉按键。 - Karakuri
这个 False 会影响其他硬件按钮吗? - rabar kareem
实际上,你应该返回super.dispatchKeyEvent()。我的错误。 - Karakuri

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接