我有以下观点:
_____________________________
| ___________________________ |-- ScrollView
|| _________________________ ||-- Vertical Linear Layout
||| _______ ______________ |||-- Horizontal Linear Layout
|||| ListA || RecyclerView ||||
|||| Head || <========> ||||
||||_______||______________||||
|||_________________________|||
|| _________________________ ||
||| _______ ______________ |||
|||| ListB || RecyclerView ||||
|||| Head || <========> ||||
||||_______||______________||||
|||_________________________|||
|| /\ ||
|| || LinearLayout ||
|| \/ ||
||___________________________||
|_____________________________|
线性布局应垂直滚动,并且当触摸并在其中滚动时,RecyclerView应相互独立地滚动。
这已经很好了。但我有两个问题。
1)当我触摸一个视图(RecyclerView或ScrollView)时,只有这个视图才能获得所有滚动事件,直到我再次释放手指。因此,当我在RecyclerView中向右滚动时,我无法同时在ScrollView中向上和向下滚动。这种行为是好的,但是如果我可以同时滚动两个视图,我会喜欢测试它的感觉。
2)更大的问题:只要ScrollView在动量释放手指后继续滚动,我就无法开始滚动孩子RecyclerViews,因为甚至在RecyclerView上方的新触摸事件仍然被ScrollView捕获。
那么我怎样才能摆脱2)中的行为?
更新
当RecyclerView水平滚动时,左侧的按钮应保持可见。
我知道我可以用一个包含所有元素的大型RecyclerView来解决这个问题,但这会非常复杂。由于每个recyclerView内容应独立滚动,左侧的按钮应保持可见,除非在视图外垂直滚动。
是否有可能阻止ScrollView的动量滚动或在下一次触摸时立即停止?或者我可以将scrolllevents传递给childView,以便两个视图都可以对其进行操作吗?
更新2: 更新了缺少水平线性布局的示例
答案 0 :(得分:0)
您使用NestedScrollView
或将LinearLayout
实施为RecyclerView
作为“页脚”。然后,您可以完全删除ScrollView
,只需使用RecyclerView
。
要将LL放入RV,您必须为每个不同的ViewType使用一个ViewHolder声明多个ViewType。
答案 1 :(得分:0)
将LinearLayout从scrollview更改为外部recyclelerview不需要仅滚动视图LinearLayout放入recycleview