RecyclerView 项目大小变化时跳转
RecyclerView jump when item size changes
我偶然发现了一个关于 RecyclerView
的问题。情况如下:
- 我从一个
Activity
导航到另一个,第二个有一个 RecyclerView
- 第二个 activity 从
Intent
中读取索引并将其 RecyclerView
跳转到该位置(因此它可能 "start" 在中间,来自用户透视)
RecyclerView
包含一个新闻列表,每个新闻都有一个网络获取的缩略图
- 缩略图是使用 Glide 获得的,带有占位符(因此
ViewHolder
中的 View
首先会膨胀 X 高度,这可能获取缩略图后更改)
现在的问题是,当用户从他们启动的项目向上滚动时,会创建 ViewHolder
并且 Glide 会请求缩略图。它导致列表项具有一定的高度,并在获得缩略图后一秒钟后更改它,这反过来导致令人讨厌的 "jump" (因为大小更改)。它只会发生 3-4 次,直到创建足够的 ViewHolders
来处理整个 RecyclerView
.
知道如何防止这种情况发生吗?理想情况下,我想让当前项目向上扩展。
我已经试过让物品从底部堆叠起来,但这并没有解决问题,只是让下面的物品而不是上面的物品发生这种情况。另外,我不能也不想预测获得的缩略图的大小。
我会在回收视图中使用占位符图像。并在可用(下载)时替换该图像。
这当然只有在您知道缩略图的大小的情况下才有效。
我偶然发现了一个关于 RecyclerView
的问题。情况如下:
- 我从一个
Activity
导航到另一个,第二个有一个RecyclerView
- 第二个 activity 从
Intent
中读取索引并将其RecyclerView
跳转到该位置(因此它可能 "start" 在中间,来自用户透视) RecyclerView
包含一个新闻列表,每个新闻都有一个网络获取的缩略图- 缩略图是使用 Glide 获得的,带有占位符(因此
ViewHolder
中的View
首先会膨胀 X 高度,这可能获取缩略图后更改)
现在的问题是,当用户从他们启动的项目向上滚动时,会创建 ViewHolder
并且 Glide 会请求缩略图。它导致列表项具有一定的高度,并在获得缩略图后一秒钟后更改它,这反过来导致令人讨厌的 "jump" (因为大小更改)。它只会发生 3-4 次,直到创建足够的 ViewHolders
来处理整个 RecyclerView
.
知道如何防止这种情况发生吗?理想情况下,我想让当前项目向上扩展。
我已经试过让物品从底部堆叠起来,但这并没有解决问题,只是让下面的物品而不是上面的物品发生这种情况。另外,我不能也不想预测获得的缩略图的大小。
我会在回收视图中使用占位符图像。并在可用(下载)时替换该图像。
这当然只有在您知道缩略图的大小的情况下才有效。