问题描述
|
出于某些特殊原因,我必须独自处理所有焦点。
在仿真器中,分配了“ 0”和“ 1”来移动焦点。为了正确起见,我的原型如下
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
情况,,4ѭ不应停止。然后,我必须让每个视图/小部件实现自己的onKeyDown / Up,这很繁琐。
有没有更简单的方法可以做到这一点?
谢谢。
解决方法
签出源代码之后,最终我得到了以下解决方案,非常简单,
@Override
public boolean executeKeyEvent(KeyEvent event) {
return true;
}
只需覆盖ScrollView :: executeKeyEvent并返回true