由于某些特殊原因,我必须自己管理注意力。
在模拟器中,KeyEvent.KEYCODE_DPAD_DOWN
并被UP
分配到移动焦点。为了把事情做好,我的原型如下
public class Button extends android.widget.Button {
public Button(Context context) {
super(context);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (isPreventSystemBehavior(keyCode)) {
return true;
}
return super.onKeyDown(keyCode, event);
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (isPreventSystemBehavior(keyCode)) {
return true;
}
return super.onKeyUp(keyCode, event);
}
private boolean isPreventSystemBehavior(int keyCode) {
switch (keyCode) {
case KeyEvent.KEYCODE_DPAD_DOWN:
case KeyEvent.KEYCODE_DPAD_UP:
case KeyEvent.KEYCODE_DPAD_LEFT:
case KeyEvent.KEYCODE_DPAD_RIGHT:
return true;
}
return false;
}
}
有效。但EditText
以防万一,KeyEvent.KEYCODE_DPAD_LEFT/RIGHT
不应该停止。然后我必须让每个视图/小部件实现自己的 onKeyDown/Up,这很乏味。有没有更简单的方法来做到这一点?谢谢。