【问题标题】:Can't scroll childview of scrollview while scrollview momentum is active滚动视图动量处于活动状态时无法滚动滚动视图的子视图
【发布时间】: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


【解决方案1】:

您要么使用NestedScrollView,要么将LinearLayout 实现为RecyclerView 作为“页脚”。然后你可以完全删除ScrollView,只使用RecyclerView

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

【讨论】:

  • 我刚试过。但是仅仅用 android.support.v4.widget.NestedScrollView 替换 ScrollView 似乎还不够。行为没有改变
  • 尝试使用不同 ViewTypes 的方法 :)
  • 我真的很想避免这种情况,如果可能的话,我已经为我的 EPG 网格去过那个地狱了。所以这是最后的手段。但是谢谢。
【解决方案2】:

将LinearLayout从scrollview改为外部recyclerview 不需要scrollview 只需要把LinearLayout放在recycleview里面

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

【讨论】:

  • 您是否考虑到当 RecyclerView 水平滚动时左侧的按钮应该保持可见。如果我只是将线性布局放在 RecyclerView 中,它会毫不费力地滚动到视图之外。
  • 如果您在每个位置都需要按钮,那么为什么您不在 recyclerview 原始文件(cardview)中添加按钮
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-17
  • 2015-12-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多