我有一个自定义视图,其中包含以下方法。我的客户视图加载了数独板。我想在电路板上实现一个光标,当用户选择物理键盘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);
}
答案 0 :(得分:0)
我已经解决了这个问题。以下是解决步骤:
a)将setFocusable(true)和setFocusableInTouchMode(true)添加到自定义视图的构造函数
b)在avd配置文件中为模拟器启用键盘。