在安卓系统中禁用DPAD按键

4

我正在尝试捕获由箭头键(上、下、右和左)生成的事件并禁用它们。以下代码片段来自其中一个活动类。

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

然而,有了这些代码,关键导航正在工作。我尝试将关键监听器添加到不起作用的活动中。目标设备是安装有Android 2.2版本的三星GT-I5500。我错过了什么吗?

我不确定event.getAction返回什么,但是可以尝试使用if(keyCode== KeyEvent.KEYCODE_DPAD_DOWN)。 - MP23
我也试过了!但是没有起作用。 - Renjith
2个回答

7

同时也要重写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进行分页。所以我需要注意些什么吗? - Renjith

0
文档中指出,你应该返回:
  • 如果你处理了事件,返回true
  • 如果你想允许下一个接收者处理事件,则返回false
由于您的方法返回false,因此您正在将事件传递给默认的键处理程序。

我现在从方法中返回true,但键仍然启用。 - Renjith

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