1

我有一个问题......我在绝对布局中有两个滚动视图。换句话说,它们是全屏的并且相互重叠

顶部滚动视图是水平滚动视图,底部滚动视图是垂直滚动滚动视图。

当我水平滚动时,我希望顶部滚动,当我垂直滚动时,我希望底部滚动。

但我的问题是水平滚动视图接受所有滚动事件,所以底部永远不会收到滚动事件......

我该如何解决这个问题?

提前致谢!

4

2 回答 2

1

嵌套它们怎么样?您可以通过填充和边距使其在视觉上看起来相同,此外您可以控制哪个视图处理触摸。

我不确定你是否可以说一个滚动视图应该只处理水平,另一个只处理垂直 - 可能不是。但是您可以在两者中覆盖 onTouchEvent 和 onInterceptTouchEvent 来定义您需要的任何行为!(查看http://developer.android.com/reference/android/view/GestureDetector.html

例如,如果您希望父滚动视图仅处理垂直滚动,而子滚动视图处理水平滚动,您应该

-override onInterceptTouchEvent(Event e) {
      if (e.getAction() == ACTION_DOWN){
        //dispatch the call manually to the scroll view below you 
        mChild.onTouchEvent(e);
        super.onTouchEvent(e);
      }
      if (e.getAction() == ACTION_MOVE && the move is horizontal){
         mChild.onTouchEvent(e);
      } else {
         super.onTouchEvent(e); 
     }
      return true;
}

}

或类似的东西。这不是你应该做什么,但你明白了。

于 2013-04-10T12:47:28.100 回答
0

您可能需要为此实现自定义控件。您需要为您的自定义控件创建一个Scroller类。您也可以下载ScrollView 类的源代码并将其修改为双向。

并且不要将可滚动的东西放入其他可滚动的东西中——它们往往会为触摸事件而战。

于 2012-01-04T20:10:46.540 回答