Compartilhar via


LayoutManager e ItemDecoration personalizados para RecyclerView

Importante

Este artigo descreve funcionalidades e diretrizes que estão em versão prévia pública e podem ser modificadas substancialmente antes de passarem para a disponibilidade geral. A Microsoft não faz nenhuma garantia, expressa ou implícita, com relação às informações fornecidas aqui.

O FoldableLayoutManager é um wrapper sobre um LinearLayoutManager e um GridLayoutManager que fornecerá um ou outro, de acordo com a extensão ou não do aplicativo.

O FoldableItemDecoration é uma implementação de um RecyclerView.ItemDecoration que criará uma margem entre as duas colunas para que elas não sejam cobertas pela dobradiça (se presente) quando o aplicativo for estendido e o FoldableLayoutManager for usado.

Em uma única tela, um RecyclerView que usa o FoldableLayoutManager e o FoldableItemDecoration terá uma aparência padrão:

Surface Duo Emulator displaying an application on the left screen with items of the same size

No modo estendido, um RecyclerView que usa o FoldableLayoutManager e o FoldableItemDecoration dividirá o conteúdo entre as duas telas:

Surface Duo Emulator displaying a spanned application with items of the same size

A partir da versão 1.0.0-beta4, um RecyclerView que usa o FoldableLayoutManager e o FoldableItemDecoration também dividirá o conteúdo no FoldingFeature em dispositivos dobráveis. Por exemplo, está é a aparência no Emulador Horizontal Dobrável de 6,7":

Foldable Emulator displaying an application on the whole screen with items of the same size

class MainActivity : AppCompatActivity() {
//...
    
    private fun onWindowLayoutInfoChanged(windowLayoutInfo: WindowLayoutInfo) {
        recyclerView.layoutManager = FoldableLayoutManager(this, windowLayoutInfo).get()
        recyclerView.replaceItemDecorationAt(FoldableItemDecoration(windowLayoutInfo))
    }
}

FoldableStaggeredLayoutManager e FoldableStaggeredItemDecoration

Há também uma maneira de colocar o StaggeredGridLayoutManager no modo de tela dupla, incluindo o FoldableStaggeredLayoutManager que deve ser usado com o FoldableStaggeredItemDecoration.

Em uma única tela, um RecyclerView que usa o FoldableStaggeredLayoutManager e o FoldableStaggeredItemDecoration terá uma aparência padrão:

Surface Duo Emulator displaying an application on the left screen with items of variable sizes

No modo estendido, um RecyclerView que usa o FoldableStaggeredLayoutManager e o FoldableStaggeredItemDecoration dividirá o conteúdo entre as duas telas:

Surface Duo Emulator displaying a spanned application with items of variable sizes

A partir da versão 1.0.0-beta4, um RecyclerView que usa o FoldableStaggeredLayoutManager e o FoldableStaggeredItemDecoration também dividirá o conteúdo entre as duas telas em dispositivos dobráveis. Por exemplo, está é a aparência no Emulador Horizontal Dobrável de 6,7":

Foldable Emulator displaying an application on the whole screen with items of variable sizes

class MainActivity : AppCompatActivity() {
//...
    
    private fun onWindowLayoutInfoChanged(windowLayoutInfo: WindowLayoutInfo) {
        recyclerView.layoutManager = FoldableStaggeredLayoutManager(this, windowLayoutInfo).get()
        recyclerView.replaceItemDecorationAt(FoldableStaggeredItemDecoration(windowLayoutInfo))
    }
}