【问题标题】:Opening childview back from scrollview从滚动视图打开子视图
【发布时间】:2010-10-28 14:38:45
【问题描述】:

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

谢谢!

【问题讨论】:

    标签: android android-scrollview


    【解决方案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;
        }
    

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

    【讨论】:

    • 如果我在activity中拦截了按键,我将如何将它发送到视图进行处理?视图需要根据按键进行一些绘图。谢谢。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-04
      • 2010-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多