gpt4 book ai didi

android - 当 child 高度不同时,RecyclerView 在向上滚动时会抖动

转载 作者:行者123 更新时间:2023-11-29 23:30:22 28 4
gpt4 key购买 nike

我的 UI 包含一个 RecyclerView,它在 TextView 中显示文本条目。实现并不是很复杂,ViewHolder 将 textView 存储在一个字段中,onBindViewHolder 只是在其上调用 TextView.setText

private List<String> entries;

override fun onBindViewHolder(holder: TextHolder, position: Int) {
holder.textView.text = entries[position];
}

当条目很短时,没有问题。但是,当某些或所有条目很长(例如屏幕长度的 2 或 3 倍)时,向上滚动时会突然出现抖动,我觉得这真的很刺耳。它看起来不像是滞后,RecyclerView 只是平滑地滚动,然后立即向上跳。当我轻弹和缓慢拖动时都会发生这种情况。

有谁知道造成这种情况的原因,这里有解决方法吗?

最佳答案

如果 RecyclerView 适配器中的元素具有特定的 View 类型,则 RecyclerView 也会假定它具有一致的高度。这将导致 RecyclerView 在滚动时失去它的跟踪。

我通过在适配器中覆盖 getItemViewType 时将不同的 ViewType 分配给不同大小的元素来解决这个问题。如果您的项目高度不同,但始终显示,这将起作用。

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

关于android - 当 child 高度不同时,RecyclerView 在向上滚动时会抖动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52807222/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com