Compartir a través de


Elementos LayoutManager e ItemDecoration personalizados para RecyclerView

Importante

En este artículo se describen la funcionalidad y las instrucciones que se encuentran en versión preliminar pública, por lo que pueden modificarse de forma sustancial antes de que estén disponibles con carácter general. Microsoft no ofrece ninguna garantía, expresa o implícita, con respecto a la información que se ofrece aquí.

FoldableLayoutManager es un contenedor sobre un elemento LinearLayoutManager y un elemento GridLayoutManager, que proporcionará uno u otro elemento en función de si la aplicación está distribuida entre pantallas.

FoldableItemDecoration es una implementación de un elemento RecyclerView.ItemDecoration que creará un margen entre las dos columnas para que la bisagra (si es que está presente) no las cubra cuando la aplicación se distribuya y se use FoldableLayoutManager.

En una sola pantalla, un elemento RecyclerView que usa FoldableLayoutManager y FoldableItemDecoration tendrá su aspecto habitual:

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

En el modo distribuido, un elemento RecyclerView que usa FoldableLayoutManager y FoldableItemDecoration dividirá el contenido entre las dos pantallas:

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

A partir de la versión 1.0.0-beta4, un elemento RecyclerView que usa FoldableLayoutManager y FoldableItemDecoration también dividirá el contenido de FoldingFeature en dispositivos plegables. Por ejemplo, este es el aspecto del emulador de plegado horizontal de 6,7 pulgadas:

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 y FoldableStaggeredItemDecoration

También hay una manera de tener el elemento StaggeredGridLayoutManager en modo de pantalla doble, al incluir el elemento FoldableStaggeredLayoutManager que debe usarse junto con FoldableStaggeredItemDecoration.

En una sola pantalla, un elemento RecyclerView que usa FoldableStaggeredLayoutManager y FoldableStaggeredItemDecoration tendrá su aspecto habitual:

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

En el modo distribuido, un elemento RecyclerView que usa FoldableStaggeredLayoutManager y FoldableStaggeredItemDecoration dividirá el contenido entre las dos pantallas:

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

A partir de la versión 1.0.0-beta4, un elemento RecyclerView que usa FoldableStaggeredLayoutManager y FoldableStaggeredItemDecoration también dividirá el contenido entre las dos pantallas en los dispositivos plegables. Por ejemplo, este es el aspecto del emulador de plegado horizontal de 6,7 pulgadas:

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))
    }
}