2

我有一个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的方法,但这也不起作用。我在这里做错了什么?

谢谢!

4

2 回答 2

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;
    }

另外,我认为您必须拦截活动中的按键,而不是视图。

于 2009-05-25T03:19:25.883 回答
1

我想到了。这不起作用的原因是子视图没有焦点。

requestFocus()在子视图的构造函数中设置属性解决了这个问题。

于 2009-05-26T01:51:02.980 回答