【发布时间】:2017-01-24 12:29:51
【问题描述】:
我有以下观点:
_____________________________
| ___________________________ |-- ScrollView
|| _________________________ ||-- Vertical Linear Layout
||| _______ ______________ |||-- Horizontal Linear Layout
|||| ListA || RecyclerView ||||
|||| Head || <========> ||||
||||_______||______________||||
|||_________________________|||
|| _________________________ ||
||| _______ ______________ |||
|||| ListB || RecyclerView ||||
|||| Head || <========> ||||
||||_______||______________||||
|||_________________________|||
|| /\ ||
|| || LinearLayout ||
|| \/ ||
||___________________________||
|_____________________________|
Linear 布局应该垂直滚动,而 RecyclerView 应该相互独立地在被触摸并在其中滚动时水平滚动。
这已经很好用了。但是我有两个问题。
1) 当我触摸一个视图(RecyclerView 或 ScrollView)时,只有这个视图会获得所有滚动事件,直到我再次松开手指。因此,当我在 RecyclerView 中向右滚动时,我无法同时在 ScrollView 中上下滚动。这种行为没问题,但如果我可以同时滚动两个视图,我很想测试一下感觉。
2) 更大的问题:只要 ScrollView 在释放手指后由于动量继续滚动,我就无法开始滚动子 RecyclerView,因为即使 RecyclerView 上方的新触摸事件仍然被 ScrollView 捕获。
那么我怎样才能摆脱 2) 中的行为?
更新:
当 RecyclerView 水平滚动时,左侧的按钮应该保持可见。
我知道我可以使用包含所有元素的大型 RecyclerView 来解决这个问题,但这会非常复杂。因为每个 recyclerView 内容应该独立滚动,并且左侧的按钮应该保持可见,除非垂直滚动到视图之外。
是否有可能阻止 ScrollView 的动量滚动或在下一次触摸时立即停止?或者我可以将滚动事件传递给 childView 以便两个视图都可以对其进行操作吗?
更新 2: 更新了缺少水平线性布局的示例
【问题讨论】:
-
使用嵌套滚动视图
标签: android android-recyclerview scrollview