簡體   English   中英

RecyclerView不會自動滾動到展開的ViewHolder項

[英]RecyclerView does not auto scroll to expanded ViewHolder item

我有一個RecyclerView,其中包含ViewHolder項目列表。 當用戶觸摸項目時,其布局/視圖會展開以顯示更多詳細信息。 非常標准的東西,效果很好...除了在這種情況下:

如果用戶滾動到列表中的最后一個項目,然后觸摸它,則該項目將在適當位置展開並且看不見。 換句話說,隨着項目的擴展,它會擴展列表的底部,但是列表不會自動滾動以將所有擴展的項目“保留在屏幕上”或“視圖中”保留在RecyclerView的范圍內。

我試圖將RecyclerView.scrollToPosition()移到列表中的最后一個位置,但是列表不會移動。

用戶可以手動滾動列表並將完整的展開項目顯示在視圖中,但是我希望它能夠自動發生。

有什么想法嗎?

編輯:我不知道這是否會影響事情,但是列表已經手動滾動到列表的底部,因此以編程方式滾動到相同位置似乎是多余的。 本質上,我想做的是“刷新”列表中的滾動位置,以使整個最終列表條目都可見。

幾乎有與使用LinearLayoutManager滾動方法。 對我來說,解決方案是使用LinearLayoutManager.scrollToPositionWithOffset()同時提供擴展視圖的額外大小作為偏移量。

int distanceInPixels;
View firstVisibleChild = recyclerView.getChildAt(0);
int itemHeight = firstVisibleChild.getHeight();
int currentPosition = recyclerView.getChildAdapterPosition(firstVisibleChild);
int p = Math.abs(position - currentPosition);
if (p > 5) distanceInPixels = (p - (p - 5)) * itemHeight;
else       distanceInPixels = p * itemHeight;
layoutMgr.scrollToPositionWithOffset(position, distanceInPixels);

嘗試在recyclerView.scrollToPosition()方法內使用“ max_size-1”作為位置參數。 在這里,max_size是列表中項目的計數。

暫無
暫無

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

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