Пользовательские LayoutManager и ItemDecoration для RecyclerView
Важно!
В этой статье описаны функциональные возможности общедоступной ознакомительной версии, а также инструкции по ее использованию. Сведения могут быть существенно изменены, прежде чем версия станет общедоступной. Майкрософт не дает никаких гарантий, явных или подразумеваемых, в отношении предоставленной здесь информации.
FoldableLayoutManager
— это оболочка над LinearLayoutManager и GridLayoutManager, которая предоставляет один из этих классов в зависимости от того, развернуто ли приложение на экранах или нет.
FoldableItemDecoration
— это реализация класса RecyclerView.ItemDecoration, которая создает поле между двумя столбцами, чтобы их не закрывала петля (при ее наличии), если приложение развернуто и используется FoldableLayoutManager
.
На одном экране RecyclerView, использующий FoldableLayoutManager
и FoldableItemDecoration
, будет выглядеть обычным образом:
В развернутом режиме RecyclerView, использующий FoldableLayoutManager
и FoldableItemDecoration
, разделит содержимое между двумя экранами:
Начиная с версии 1.0.0-beta4
RecyclerView, использующий FoldableLayoutManager
и FoldableItemDecoration
, также разделяет содержимое между FoldingFeature на складных устройствах. Например, вот как это будет выглядеть на эмуляторе с горизонтальным складыванием с диагональю 6,7":
class MainActivity : AppCompatActivity() {
//...
private fun onWindowLayoutInfoChanged(windowLayoutInfo: WindowLayoutInfo) {
recyclerView.layoutManager = FoldableLayoutManager(this, windowLayoutInfo).get()
recyclerView.replaceItemDecorationAt(FoldableItemDecoration(windowLayoutInfo))
}
}
FoldableStaggeredLayoutManager и FoldableStaggeredItemDecoration
Существует также способ использовать StaggeredGridLayoutManager в режиме двойного экрана путем включения FoldableStaggeredLayoutManager
, используемого вместе с FoldableStaggeredItemDecoration
.
На одном экране RecyclerView, использующий FoldableStaggeredLayoutManager
и FoldableStaggeredItemDecoration
, будет выглядеть обычным образом:
В развернутом режиме RecyclerView, использующий FoldableStaggeredLayoutManager
и FoldableStaggeredItemDecoration
, разделит содержимое между двумя экранами:
Начиная с версии 1.0.0-beta4
RecyclerView, использующий FoldableStaggeredLayoutManager
и FoldableStaggeredItemDecoration
, также разделяет содержимое между двумя экранами на складных устройствах. Например, вот как это будет выглядеть на эмуляторе с горизонтальным складыванием с диагональю 6,7":
class MainActivity : AppCompatActivity() {
//...
private fun onWindowLayoutInfoChanged(windowLayoutInfo: WindowLayoutInfo) {
recyclerView.layoutManager = FoldableStaggeredLayoutManager(this, windowLayoutInfo).get()
recyclerView.replaceItemDecorationAt(FoldableStaggeredItemDecoration(windowLayoutInfo))
}
}