2012-01-04 111 views
1

我有一个问题...我有一个absolutelayout中的两个滚动视图。换句话说,它们是全屏幕并且彼此重叠重叠滚动视图

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

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

但我的问题是,滚动型水平通吃滚动事件,使其底部一个从来没有收到一个滚动事件......

我怎样才能解决这个问题?

在此先感谢!

+0

另外我注意到你使用了一个AbsoluteLayout,这是弃用。主要是由于屏幕尺寸和分辨率现在都不同。它可能在您的模拟器或手机上看起来很棒,但可以尝试将它放在平板电脑或其他手机上(没有什么看起来合适)。只是一个头。 – Jack 2012-01-04 20:46:19

+0

我使用fill_parent,所以滚动视图将永远是全尺寸:) – Alioooop 2012-01-05 11:59:27

回答

0

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

不要将可滚动的东西放入其他可滚动的东西 - 它们倾向于通过触摸事件进行争夺。

+0

但是,这将有助于什么?如果其他事情正在采用,底层视图将永远不会获得触摸事件? – Alioooop 2012-01-05 12:15:44

1

如何嵌套它们?您可以通过填充和边距使其在视觉上看起来相同,并且还可以控制哪个视图处理触摸。

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

例如,如果您希望父滚动视图只处理垂直滚动,而孩子把手水平,你应该

}

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