RecyclerView 的自訂 LayoutManager 和 ItemDecoration
重要
本文說明 處於公開預覽 狀態的功能和指引,而且可能會在正式推出之前大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
FoldableLayoutManager
是LinearLayoutManager和GridLayoutManager的包裝函式,會根據應用程式是否跨越顯示器提供一個或另一個。
FoldableItemDecoration
是RecyclerView.ItemDecoration的實作,會在兩個數據行之間建立邊界,使其不會受到轉軸 (所涵蓋,以防應用程式跨越並使用 FoldableLayoutManager
時) 。
在單一畫面上,使用 FoldableLayoutManager
和 的 FoldableItemDecoration
RecyclerView 看起來會像往常一樣:
在跨越模式中,使用 FoldableLayoutManager
和 FoldableItemDecoration
的 RecyclerView 會在兩個畫面之間分割內容:
1.0.0-beta4
從版本開始,使用 FoldableLayoutManager
的 FoldableItemDecoration
RecyclerView 也會將內容分割到可折迭裝置上的 FoldingFeature。 例如,這是 6.7「 水準折迭Emulator的外觀:
class MainActivity : AppCompatActivity() {
//...
private fun onWindowLayoutInfoChanged(windowLayoutInfo: WindowLayoutInfo) {
recyclerView.layoutManager = FoldableLayoutManager(this, windowLayoutInfo).get()
recyclerView.replaceItemDecorationAt(FoldableItemDecoration(windowLayoutInfo))
}
}
FoldableStaggeredLayoutManager 和 FoldableStaggeredItemDecoration
另外還有一種方式可以讓雙螢幕模式中的 StaggeredGridLayoutManager 包含 FoldableStaggeredLayoutManager
應該與 一起使用的 FoldableStaggeredItemDecoration
。
在單一畫面上,使用 FoldableStaggeredLayoutManager
和 的 FoldableStaggeredItemDecoration
RecyclerView 看起來會像往常一樣:
在跨越模式中,使用 FoldableStaggeredLayoutManager
和 FoldableStaggeredItemDecoration
的 RecyclerView 會在兩個畫面之間分割內容:
1.0.0-beta4
從版本開始,使用 FoldableStaggeredLayoutManager
和 FoldableStaggeredItemDecoration
的 RecyclerView 也會在可折迭裝置上的兩個畫面之間分割內容。 例如,這是 6.7「 水準折迭Emulator的外觀:
class MainActivity : AppCompatActivity() {
//...
private fun onWindowLayoutInfoChanged(windowLayoutInfo: WindowLayoutInfo) {
recyclerView.layoutManager = FoldableStaggeredLayoutManager(this, windowLayoutInfo).get()
recyclerView.replaceItemDecorationAt(FoldableStaggeredItemDecoration(windowLayoutInfo))
}
}