我有一个带有子视图的父ScrollView
。当用户按下后退按钮时,我希望子视图处理该事件。我尝试了几件事,但似乎都没有。按后退按钮可以杀死活动。
public class GameScrollView extends ScrollView{
public GameScrollView(Context context) {
super(context);
}
@Override
public boolean onInterceptTouchEvent (MotionEvent ev){
return false;
}
@Override
public boolean onKeyDown (int keyCode, KeyEvent event){
return false;
}
}
子视图中的我有以下代码
public class GameView extends View implements OnTouchListener, onKeyListener{
public boolean onKey(View v, int keyCode, KeyEvent event){
if(keyCode == KeyEvent.KEYCODE_BACK){
//do stuff
}
invalidate();
return true;
}
}
在ScrollView
我也尝试重写dispatchKeyEvent
方法以返回false,但这也不起作用。我在这里做错了什么?
谢谢!
答案 0 :(得分:1)
@Override
public boolean onKeyDown(int i, KeyEvent event) {
if (i == KeyEvent.KEYCODE_BACK) {
return true;
else {
super.onKeyDown(i, event);
return true;
}
}
return false;
}
另外,我认为您必须截取活动中的按键而不是视图。
答案 1 :(得分:1)
我明白了。这不起作用的原因是因为儿童观点没有焦点。
在子视图的构造函数中设置requestFocus()
属性修复了问题。