当scrollview动量激活时,无法滚动滚动视图的子视图

时间:2017-01-24 12:29:51

标签: android android-recyclerview scrollview

我有以下观点:

 _____________________________ 
| ___________________________ |-- 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: 更新了缺少水平线性布局的示例

2 个答案:

答案 0 :(得分:0)

您使用NestedScrollView或将LinearLayout实施为RecyclerView作为“页脚”。然后,您可以完全删除ScrollView,只需使用RecyclerView

要将LL放入RV,您必须为每个不同的ViewType使用一个ViewHolder声明多个ViewType。

答案 1 :(得分:0)

将LinearLayout从scrollview更改为外部recyclelerview不需要仅滚动视图LinearLayout放入recycleview

请检查此链接:https://stackoverflow.com/a/6211286/4427519