【问题标题】:onKeyDown event doesn't work for menu button an android phoneonKeyDown 事件不适用于 Android 手机的菜单按钮
【发布时间】:2015-05-26 08:26:41
【问题描述】:

我想阻止设备的菜单按钮按下事件。

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

@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);
}

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

还有其他方法可以屏蔽菜单按钮吗?

PS:我使用的是 appcompat-v7:22

【问题讨论】:

  • 为什么?你控制菜单,只是不要给它任何菜单项。
  • 但我需要工具栏菜单中的项目。问题是我不想在用户单击菜单按钮时显示菜单。

标签: android


【解决方案1】:

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

这就是问题所在。

【讨论】:

  • 如果 22.2.1 破坏了事件并且您更新到 22.2.1 您更新到破坏的版本?你确定你没有犯错吗?
【解决方案2】:

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

【讨论】:

  • 这应该是一条评论,因为它没有回答问题
  • Ed 我没有评论的声誉。 .为什么不回答呢?说不定能解决他的问题
  • 我尊重您没有声誉的事实,但您仍然不应该回答问题,除非您确定问题在问什么。看看这个guide
  • @EdGeorge 有帮助。
  • 抱歉,我不想阻止一项特殊项目。我想处理菜单按钮点击。
猜你喜欢
  • 2017-09-16
  • 1970-01-01
  • 2022-01-17
  • 2022-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多