onKeyDown事件不适用于Android手机的菜单按钮

时间:2015-05-26 08:26:42

标签: android

我想屏蔽设备的菜单按钮按下事件。

到目前为止,我已经使用了这段代码:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
    return (keyCode == KeyEvent.KEYCODE_MENU || super.onKeyDown(keyCode, event));
}

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
    return (keyCode == KeyEvent.KEYCODE_MENU || super.onKeyUp(keyCode, event));
}

@Override
public boolean dispatchKeyEvent(KeyEvent event) {
    int keyCode = event.getKeyCode();
    int action = event.getAction();
    boolean isDown = action == 0;

    if (keyCode == KeyEvent.KEYCODE_MENU) {
        return isDown ? this.onKeyDown(keyCode, event) : this.onKeyUp(keyCode, event);
    }

    return super.dispatchKeyEvent(event);
}

当我按下菜单按钮方法onKeyDown时,onKeyUpdispatchKeyEvent不会被调用。我看到了菜单列表。

还有另一种阻止菜单按钮的方法吗?

PS:我使用appcompat-v7:22

2 个答案:

答案 0 :(得分:1)

不幸的是,AppCompat v22.2.1再次打破了onKeyDown和onKeyUp事件。我刚刚更新了v22.2.1。

这是问题。

答案 1 :(得分:-1)

答案是:
MenuItem menuItem = menu.findItem(R.id.action_share);
(注意:id是菜单项)
menuItem.setEnabled(假);