【问题标题】:Disable DPAD keys in android在android中禁用DPAD键
【发布时间】:2013-04-16 08:18:37
【问题描述】:

我正在尝试捕获由箭头键(上、下、右和左)生成的事件并禁用它们。下面的代码 sn-p 来自活动类之一。

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
    if(event.getAction() == KeyEvent.KEYCODE_DPAD_DOWN) return true;
    else return true;
}

但是,有了这些代码,按键导航就可以工作了。我尝试将关键侦听器添加到也不起作用的活动中。

目标设备是三星 GT-I5500,Android 2.2 版本开启。

我错过了什么吗?

【问题讨论】:

  • 我不确定 event.getAction 会返回什么,但可能会尝试使用 if(keyCode== KeyEvent.KEYCODE_DPAD_DOWN)
  • 我也试过了!但不工作。

标签: android android-layout android-tabhost android-keypad


【解决方案1】:

也覆盖 onKeyDown 并返回 true 而不是 false。 像这样的东西:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    switch (keyCode) {
        case KeyEvent.KEYCODE_DPAD_LEFT:
        case KeyEvent.KEYCODE_DPAD_RIGHT:
        case KeyEvent.KEYCODE_DPAD_UP:
        case KeyEvent.KEYCODE_DPAD_DOWN:
            return true; 
    }
    return false;
}

【讨论】:

  • 感谢您的回答!但是,它几乎没有任何改变。顺便说一句,我的是一个使用 tabHost 和 TabGroupActivity 的选项卡式应用程序。那么有什么需要注意的吗?
【解决方案2】:

documentation中,声明你应该返回:

  • true 如果你处理了事件
  • false 如果您想允许下一个接收者处理事件

您的方法返回 false,因此您将事件传递给默认键处理程序

【讨论】:

  • 检查编辑!我现在从该方法返回 true。但键仍处于启用状态
猜你喜欢
  • 1970-01-01
  • 2019-01-24
  • 2012-09-01
  • 2011-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-03
  • 1970-01-01
相关资源
最近更新 更多