Android模拟器上的onKeyDown方法不适用于物理键盘DPAD

时间:2014-10-25 14:42:36

标签: android

我有一个自定义视图,其中包含以下方法。我的客户视图加载了数独板。我想在电路板上实现一个光标,当用户选择物理键盘DPad时,该光标将允许所选方框的移动。下面是我用于游标实现的方法。

我的问题是当我从物理键盘按任何DPAD时,Sudoku板上没有任何反应。它似乎无法从物理键盘检测到DPAD。

public boolean onKeyDown(int keyCode, KeyEvent event)
{
    Log.d(TAG, "onKeyDown: keycode=" + keyCode + ", event="
            + event);
    switch (keyCode) {
        case KeyEvent.KEYCODE_1:
            select(selX, selY - 1);
            break;
        case KeyEvent.KEYCODE_DPAD_DOWN:
            select(selX, selY + 1);
            break;
        case KeyEvent.KEYCODE_DPAD_LEFT:
            select(selX - 1, selY);
            break;
        case KeyEvent.KEYCODE_DPAD_RIGHT:
            select(selX + 1, selY);
            break;
        default:
            return super.onKeyDown(keyCode, event);
    }
    return true;
}


private void select(int x, int y)
{
    invalidate(selRect);
    selX = Math.min(Math.max(x, 0), 8);
    selY = Math.min(Math.max(y, 0), 8);
    getRect(selX, selY, selRect);
    invalidate(selRect);
}

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题。以下是解决步骤:

a)将setFocusable(true)和setFocusableInTouchMode(true)添加到自定义视图的构造函数

b)在avd配置文件中为模拟器启用键盘。