【问题标题】:Why RecyclerView items disappear immediately when using Transition API?为什么使用 Transition API 时 RecyclerView 项目会立即消失?
【发布时间】:2018-03-23 15:43:28
【问题描述】:

这是一个关于Android Transition API使用的问题。

我正在尝试为列表的高度变化设置动画,就像下拉菜单一样。

我尝试了两种方法

  1. 使用RecyclerView 并为其高度变化设置动画
  2. 使用ScrollView > LinearLayout 层次结构并为ScrollView 的高度设置动画。

第二种方法效果很好。
但是第一种方法有一个严重的故障 - 当折叠过渡开始时,项目立即消失。

通过查看下面的 GIF,您可以清楚地观察到差异:

确切地说,在我更改 RecyclerView 的 LayoutParams 时,项目的可见性会发生变化,而无需等待过渡完成,无论它是展开还是折叠

代码

我创建了一个minimal project on Github
如果你只想看代码,这里是MainActivity

问题

  1. RecyclerView可以达到ScrollView的效果吗?
  2. 如果是,怎么做?

【问题讨论】:

    标签: android android-recyclerview android-transitions


    【解决方案1】:

    我的想法是对所有回收器视图行进行单独而不是整个 RecyclerView 的转换:

    所以在折叠时遍历RecyclerView 的每一行并进行转换。请记住检查null,如果某些行被回收,它们可能会返回null。所以在那之后折叠整个recyclerView。

    同样明智的做法是扩展视图。

    这个问题是因为 RecyclerView 有很多视图,但 Scroll View 只有一个 View 嵌套在其中。

    【讨论】:

    • 你的意思是在viewholder上执行过渡?
    • 不是 onClick 中的视图持有者,只需使用 for 循环进行迭代,例如 for(int i=item_count: item_count>=0: item_count--){ //get each item of the recyclerView and make a transition}
    • 不是 onClick 中的视图持有者,只需使用 for 循环进行迭代,例如 for(int i=item_count: item_count>=0: item_count--){ //get each item of the recyclerView and make a transition}
    猜你喜欢
    • 2023-04-07
    • 1970-01-01
    • 2016-06-11
    • 2020-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-21
    • 1970-01-01
    相关资源
    最近更新 更多