簡體   English   中英

Kotlin/RecyclerView:scrollToPositionWithOffset 未顯示

[英]Kotlin/RecyclerView: scrollToPositionWithOffset Not Showing Up

我想了解為什么我似乎無法在 LinearLayoutManager 上使用 scrollToPositionWithOffset 方法? 請看圖片了解我的意思:

一點背景:

圖像中的第一行(帶有scrollToPosition<\/code> )正在滾動 RecyclerView 以使位置(在本例中為 50)可見<\/strong>- 這通常意味着所選位置顯示在可見 RecyclerView 的底部(其中位置 50 首先變為可見之后'滾動')。 而我想始終將其顯示在頂部。 根據我的研究,某種解決方案似乎是使用此scrollToPositionWithOffset<\/code>方法( 滾動 RecyclerView 以在頂部顯示所選項目<\/a>)

有趣的是,我能夠通過自定義 LinearLayoutManager 的 SmoothScroller 來實現我想要的,但是我的數據集很大,所以“平滑滾動”的速度是一個問題,而且我似乎無法在不引起其他問題的情況下提高速度。

簡而言之,我希望 scrollToPositionWithOffset 能幫到我。 但是,我不知道如何訪問該方法。

您需要投射從RecyclerView.getLayoutManager()返回的LayoutManager

(recyclerview.layoutManager as LinearLayoutManager).scrollToPositionWithOffset

方法如下:

recyclerView.apply { 
      
    (layoutManager as LinearLayoutManager).scrollToPositionWithOffset(itemPosition, offsetValue)

}

請注意,如果您的 list/recycleView 具有水平方向,則offsetValue可能是X,如果您的 list/recycleView 具有垂直方向,則offsetValue可能是Y。

為了為其他答案提供更多上下文, scrollToPositionWithOffset()<\/code>不是 LayoutManager (基類)的方法,而是 LinearLayoutManager (及其子類)之一。 我的假設是這里的推理是這樣的方法不一定適用於其他 LayoutManagers(或可能是模棱兩可的)。 假設我們有一個更“異國情調”的布局管理器,它不會將項目組織為簡單的列表,而是以圓形的形式。 在這種情況下,偏移量應該怎么做? 它是否代表要添加到滾動條上的額外弧度\/度數? 或者更確切地說是別的什么?

然而,對於 LinearLayoutManager(和任何派生類),偏移量應該做什么是相當清楚的。 如果我錯了,請糾正我,但我認為這就是為什么只有 LinearLayoutManagers 可以訪問該方法,因此需要 RecyclerView 的 LayoutManager 的強制轉換。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM