我有个问题..。我有两个绝对布局的滚动视图。换句话说,它们是全屏的,并且彼此重叠。
顶部滚动视图是水平滚动视图,底部滚动视图是垂直滚动滚动视图。
当我水平滚动时,我希望顶部的滚动,当我垂直滚动时,我希望底部的滚动。
但我的问题是,水平滚动视图接受所有的滚动事件,所以底部的滚动视图永远不会收到滚动事件……
我该如何解决这个问题?
提前感谢!
发布于 2013-04-10 20:47:28
嵌套它们怎么样?你可以通过填充和页边距使它在视觉上看起来是一样的,而且你还可以控制哪个视图处理这些触摸。
我不确定您是否可以说一个滚动视图应该只处理水平视图,而另一个滚动视图应该只处理垂直视图-可能不是。但是您可以在两者中覆盖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;
}}
或者类似的东西。这并不是你应该做的事情,但你已经明白了。
发布于 2012-01-05 04:10:47
为此,您可能需要实现一个自定义控件。您需要为您的自定义控件创建一个Scroller类。您还可以下载source code for ScrollView class并将其修改为双向的。
不要把可滚动的东西放到其他可滚动的东西中--它们往往会因为触摸事件而发生争执。
https://stackoverflow.com/questions/8733210
复制相似问题