LayoutManager et ItemDecoration personnalisés pour RecyclerView

Important

Les fonctionnalités et l’aide décrites dans cet article sont en préversion publique et peuvent faire l’objet de modifications importantes avant leur lancement en disponibilité générale. Microsoft ne donne aucune garantie, expresse ou implicite, concernant les informations fournies ici.

Le FoldableLayoutManager est un wrapper sur un FoldableLayoutManager et un GridLayoutManager qui va fournie l’un ou l’autre selon que l’application est répartie ou non sur des écrans.

Le FoldableItemDecoration est une implémentation d’un FoldableItemDecoration qui crée une marge entre les deux colonnes afin que celles-ci ne soient pas cachées par la charnière (le cas échéant) quand l’application est répartie sur deux écrans et que le FoldableLayoutManager est utilisé.

Sur un seul écran, une RecyclerView qui utilise FoldableLayoutManager et FoldableItemDecoration se présente comme d’habitude :

Émulateur Surface Duo affichant une application sur l’écran gauche avec des éléments de la même taille

En mode réparti, une RecyclerView qui utilise FoldableLayoutManager et FoldableItemDecoration divise le contenu entre les deux écrans :

Émulateur Surface Duo affichant une application répartie avec des éléments de la même taille

À compter de la version 1.0.0-beta4, une RecyclerView qui utilise FoldableLayoutManager et FoldableItemDecoration va également diviser le contenu avec FoldingFeature sur les appareils pliables. Par exemple, voici comment il se présenterait sur l’Émulateur de pliage horizontal de 6,7 pouces :

Émulateur pliable affichant une application sur tout l’écran avec des éléments de la même taille

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

FoldableStaggeredLayoutManager et FoldableStaggeredItemDecoration

Il y a aussi un moyen d’avoir StaggeredGridLayoutManager en mode double écran, en incluant qui doit être utilisé avec FoldableStaggeredItemDecoration.

Sur un seul écran, une RecyclerView qui utilise FoldableStaggeredLayoutManager et FoldableStaggeredItemDecoration se présente comme d’habitude :

Émulateur Surface Duo affichant une application sur l’écran gauche avec des éléments de tailles variables

En mode réparti, une RecyclerView qui utilise FoldableStaggeredLayoutManager et FoldableStaggeredItemDecoration divise le contenu entre les deux écrans :

Émulateur Surface Duo affichant une application répartie avec des éléments de tailles variables

À compter de la version 1.0.0-beta4, une RecyclerView qui utilise FoldableStaggeredLayoutManager et FoldableStaggeredItemDecoration va également diviser le contenu entre les deux écrans sur les appareils pliables. Par exemple, voici comment il se présenterait sur l’Émulateur de pliage horizontal de 6,7 pouces :

Émulateur pliable affichant une application sur tout l’écran avec des éléments de tailles variables

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