【问题标题】:RecyclerView doesn't respect translation when recycling viewsRecyclerView 在回收视图时不尊重翻译
【发布时间】:2015-08-29 02:28:48
【问题描述】:

我现在在玩RecyclerView,偶然发现了以下问题。当 RecyclerView 的 LinearLayoutManager 决定视图是否离开屏幕(因此它可以成为回收器)时,它不会考虑视图的 translationY

所以本质上,当我向上滚动并看到带有正面 translationY 的视图时,LinearLayoutManager 认为该视图不在屏幕上,但实际上它仍然可见(因为它被向下翻译了)。

我注意到LinearLayoutManager 做出此决定的方式是查看getDecoratedBottom(View),因此我尝试覆盖getDecoratedBottom(View) 以包括翻译。不幸的是,它完全打乱了布局——当我们布局新项目时也会使用这种方法,因此新项目会得到额外的翻译(在现有项目之上)..

有没有简单的方法告诉LinearLayoutManager 在决定回收视图而不从头开始重新实现LayoutManager 时查看translation 属性?

【问题讨论】:

  • 您找到解决问题的方法了吗?
  • @ZakharovRoman 是的......分叉了 LinearLayoutManager 实现并稍微修改了它的逻辑以包括翻译。但没有什么“开箱即用”可以真正解决这个问题。
  • 好的,我会试试的。谢谢

标签: android android-support-library android-recyclerview


【解决方案1】:

可能对某人有帮助,我找到了解决方案。

首先我尝试使用翻译动画,但没有成功。 但是,我刚刚创建了一个扩展ItemDecoration 的新类。然后覆盖 getItemOffsets() 并在 Rect 上设置适当的偏移量。 LayoutManager 成功计算了这个偏移量。获得的结果在附加的图像上。

【讨论】:

  • 好吧,我不确定它是否适用于我的情况,因为我正在更改每一帧的翻译。真的不知道经常改变装饰偏移的含义。
猜你喜欢
  • 2016-10-02
  • 1970-01-01
  • 2019-08-16
  • 1970-01-01
  • 1970-01-01
  • 2015-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多