我打算實現具有可變項的高度不換正確
項目視圖中應占有該項目的整個高度
它可能什麼水平RecyclerView是物品高度小於回收站視圖中最高物品的高度,在這種情況下,它應該像頂部一樣粘到頂部在上面的截圖中。
我運行蟲子放入
如上面的截圖中,觀點越來越被截斷。
什麼我試過到目前爲止
起初我WRAP_CONTENT去上recyclerview,現在,它是支持的。當屏幕上當時沒有任何可見的視圖是最高的時候,它不起作用。這對於視圖層次結構的佈局是有意義的。 如果高度取決於數據,那麼如何計算尚未綁定到任何數據的東西的高度?
解決方法時間:秒
,而不是試圖自定義佈局管理器,我第一次去什麼,我覺得需要做 - 奠定了開頭的所有項意見,以找出他們的身高。
在屏幕的上半部分有一個進度條和一個動畫,以吸引用戶的注意力,而這一切都發生在recyclerview可見性設置爲不可見的情況下。我使用了兩件事,一件不足 - 我在適配器的onViewAttached()
調用中附加了一個觀察者,我也使用了滾動更改偵聽器。有一個LinearSnapHelper連接到回收站視圖,以便在滾動時捕捉鄰近(根據滾動方向的下一個或上一個)位置。
在此設置中,
- 我使用
layoutManager.smoothScrollToPosition()
獲取在滾動變化監聽使用
View currentChildView = binding.nextRv.getChildAt(layoutManager.findFirstCompletelyVisibleItemPosition()); if (currentChildView != null) { currentChildHeight = currentChildView.getHeight(); }
子視圖的高度要在recyclerview每個位置在RecyclerView.SCROLL_STATE_IDLE
上或通過將高度傳遞給適配器的onVie中的上述觀察者wAttachedToWindow()
@Override
public void onViewAttachedToWindow(BindingViewHolder holder) {
if (mObserver != null) {
mObserver.onViewAttached(holder.binding.getRoot().getHeight());
}
}
- 存儲一個
maxHeight
改變到maxHeight的最大和新的孩子的高度。
很明顯,這很醜陋。另外,它不會給我當前視圖的高度 - onAttached意味着它只是附加,沒有測量和佈局。它是回收視圖,而不是綁定到當前數據項的視圖。其中存在諸如上面所示的截斷視圖的問題。
我也試過在回收視圖WRAP_CONTENT高度,從回收的母公司,直到回收和即將SCROLL_STATE_IDLE上滾動的孩子無效。不起作用。
我不確定自定義佈局管理器如何在這裏提供幫助。
有人可以引導我在正確的方向嗎?
可以添加XML文件 – Redman
請找到[這裏](https://gist.github.com/adroitandroid/85e7a66d7f796379649c2d9eab26cf76) –
有問題的recyclerview是一個ID爲「next_rv」。其實對於上面詳述的解決方案,最初我已將它設置爲高度match_parent,然後將高度重置爲獲得的maxHeight –