当孩子的身高变化时,向上滚动时会出现RecyclerView抽搐

时间:2018-10-14 21:23:55

标签: android android-recyclerview kotlin

我的UI由一个RecyclerView组成,该RecyclerView显示了TextViews中的文本条目。实现并不十分复杂,ViewHolder将textView存储在一个字段中,given只需对其调用onBindViewHolder

TextView.setText

当条目简短时,没有问题。但是,当某些或所有条目很长时(例如屏幕长度的2或3倍),在向上滚动时会引起突然的抽动,我发现这确实很刺耳。看起来似乎没有什么滞后,RecyclerView会平滑滚动,然后立即向上跳跃。轻弹和缓慢拖动时都会发生这种情况。

有人知道会导致这种情况吗,这是一种解决方法?

1 个答案:

答案 0 :(得分:1)

如果RecyclerView适配器中的某个元素具有某种视图类型,则RecyclerView还将假定其高度一致。滚动时,这将导致RecyclerView失去跟踪。

我通过在适配器中覆盖ViewType时为不同大小的元素分配了不同的getItemViewType来解决此问题。如果您的商品的高度不同,但始终显示一致,则可以使用此功能。

您可以尝试的另一件事是在适配器的LayoutParams方法中重置子视图的onBindViewHolder()。这可能导致它刷新父级布局,并通知子级更新状态。