重叠滚动视图

时间:2012-01-04 20:01:48

标签: android scrollview overlapping

我遇到了问题...我在absolutelayout中有两个滚动视图。换句话说,它们是全屏的并且相互叠加

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

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

但我的问题是水平滚动视图采用所有滚动事件,因此底部的滚动事件永远不会收到滚动事件......

我该如何解决这个问题?

提前致谢!

2 个答案:

答案 0 :(得分: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;
}

}

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

答案 1 :(得分:0)

您可能需要为此实现自定义控件。您的自定义控件需要Scroller个类。您也可以下载source code for ScrollView class并将其修改为双向。

并且不要将可滚动的东西放到其他可滚动的东西中 - 它们倾向于对触摸事件进行斗争。