Xigong93/ExpandableRecyclerView

老哥,我又来了,发现了个终极的问题,可能是之前我提的问题的准确复现

9292922 opened this issue · 11 comments

问题描述:
当recyclerview设置为warp_content(这个肯定很多时候需要这样做的)
然后,当所有的groupitem全部关闭时,即recyclerview高度是最小的。

然后如下展开其中的groupitem,再闭合。
会发现动画显示不完全!就算不开延迟也明显肉眼可以感受到。

原因分析:
当groupitem展开时,recyclerview高度足够大,然后点击任意groupitem使其闭合,这时,recyclerview就直接刷新高度了(直接刷新为当正在执行groupitem已经关闭的高度),但是groupitem的sub_Items还在一一往上缩,但是当groupitem被点击时recyclerview已然早就缩到已经关闭的高度了,自然就会导致全部子item往上缩的时候全部都没被显示出来。

下面请看动画放慢的gif,可能比较大,我为了您看得清晰采用了比较高的清晰度,大概8MB

此外,提前祝您旧历新年快乐,新的一年事事顺利,身体健康,事业有成!

Video_20210209_102117_674

新年快乐,哈哈哈!

设置成wrap_content 高度会发生变化,会导致动画出现问题,这点我在README中也写了。
为什么要把ExpandableRecyclerView高度 设置为wrap_content呢?是想做哪儿种UI效果呢?应该是可以有变通的方式来实现。

抱歉哈,我还没有理解为什么上拉加载更多,需要把RecyclerView 设置成wrap_content,你能把场景说清楚吗?
还有我不好支持RecyclerView 设置wrap_content属性是因为item的展开和收齐确实会导致高度变化,而安卓是不能在执行动画的过程中改变View的高度的,否则会导致缓存失效引起掉帧动画卡顿。

使用ScrollView 嵌套RecyclerView 似乎并不是一个很好的方式,会有性能问题和滑动冲突的问题。

关闭动画,水波纹效果不明显的问题,可以这么解决:

  1. 设置ExpandableAdapter.enableAnimation = true
  2. 设置ExpandableItemAnimator.animDuration = 0L

我先关闭了,有问题,请再提issue.