我有一个问题......我在绝对布局中有两个滚动视图。换句话说,它们是全屏的并且相互重叠
顶部滚动视图是水平滚动视图,底部滚动视图是垂直滚动滚动视图。
当我水平滚动时,我希望顶部滚动,当我垂直滚动时,我希望底部滚动。
但我的问题是水平滚动视图接受所有滚动事件,所以底部永远不会收到滚动事件......
我该如何解决这个问题?
提前致谢!
我有一个问题......我在绝对布局中有两个滚动视图。换句话说,它们是全屏的并且相互重叠
顶部滚动视图是水平滚动视图,底部滚动视图是垂直滚动滚动视图。
当我水平滚动时,我希望顶部滚动,当我垂直滚动时,我希望底部滚动。
但我的问题是水平滚动视图接受所有滚动事件,所以底部永远不会收到滚动事件......
我该如何解决这个问题?
提前致谢!
嵌套它们怎么样?您可以通过填充和边距使其在视觉上看起来相同,此外您可以控制哪个视图处理触摸。
我不确定你是否可以说一个滚动视图应该只处理水平,另一个只处理垂直 - 可能不是。但是您可以在两者中覆盖 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;
}
}
或类似的东西。这不是你应该做什么,但你明白了。
您可能需要为此实现自定义控件。您需要为您的自定义控件创建一个Scroller类。您也可以下载ScrollView 类的源代码并将其修改为双向。
并且不要将可滚动的东西放入其他可滚动的东西中——它们往往会为触摸事件而战。