【发布时间】:2011-05-25 09:19:47
【问题描述】:
由于某些特殊原因,我必须自己管理注意力。
在模拟器中,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,这很乏味。
有没有更简单的方法来做到这一点?
谢谢。
【问题讨论】:
标签: android view focus keyevent