【发布时间】:2020-04-08 13:53:28
【问题描述】:
我正在寻找一种以编程方式缓慢滚动 RecyclerView 以便将某个元素 targetPosition 准确地放在屏幕中间的方法。请注意,我在 RecylerView 中的所有项目在设计上都具有相同的高度。 RecyclerView 是垂直的。我正在使用 Kotlin 和 AndroidX 编程
我试过了:
smoothScrollToPosition(targetPosition)
它滚动很慢(我也可以通过扩展 LinearLayoutManager 和覆盖 calculateSpeedPerPixel() 来控制速度 - 请参阅 How can i control the scrolling speed of recyclerView.smoothScrollToPosition(position)),但是我无法控制滚动后列表项在屏幕上的确切位置.我只知道它将在屏幕上完全可见。
我试过了:
scrollToX(0, targetPosition * itemHeight - screenHeight / 2)
它给了我错误消息:“W/RecyclerView:RecyclerView 不支持滚动到绝对位置。请改用 scrollToPosition”
我还尝试将 RecyclerView 替换为包含所有子项的 LinearLayoutManager,并在视图中翻译 LinearLayoutManager,但最初我没有让子项在屏幕之外进行绘制。
这个问题有解决办法吗?
【问题讨论】:
-
你试过scrollToPosition(0)吗?
-
是的。也许我不清楚,我有一个比方说 100 个项目的 RecyclerView,我想滚动直到我说项目 50 正好在屏幕中间。
标签: android kotlin android-recyclerview scroll androidx