LayoutManager personalizzato e ItemDecoration per RecyclerView

Importante

Questi articolo descrive le funzionalità e il materiale sussidiario disponibili nell'anteprima pubblica, che potrebbero tuttavia subire modifiche sostanziali prima del rilascio della versione disponibile a livello generale. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.

L'oggetto FoldableLayoutManager è un wrapper su linearLayoutManager e un GridLayoutManager che fornirà uno o l'altro a seconda che l'app sia estesa tra gli schermi o meno.

L'oggetto FoldableItemDecoration è un'implementazione di un oggetto RecyclerView.ItemDecoration che creerà un margine tra le due colonne in modo che non vengano coperte dalla cerniera (nel caso sia presente) quando l'app viene estesa e viene FoldableLayoutManager usata.

In una singola schermata, un Oggetto RecyclerView che usa e FoldableLayoutManager verrà FoldableItemDecoration visualizzato come di consueto:

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

In modalità estesa, un Oggetto RecyclerView che usa FoldableLayoutManager e FoldableItemDecoration dividerà il contenuto tra le due schermate:

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

A partire dalla 1.0.0-beta4 versione, un RecyclerView che usa FoldableLayoutManager e FoldableItemDecoration dividerà il contenuto tra i dispositivi foldFeature anche nei dispositivi piegabili. Ad esempio, si tratta di un aspetto sul Emulator orizzontale orizzontale 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

Esiste anche un modo per avere StaggeredGridLayoutManager in modalità dual-screen, includendo il FoldableStaggeredLayoutManager che deve essere usato insieme a FoldableStaggeredItemDecoration.

In una singola schermata, un Oggetto RecyclerView che usa e FoldableStaggeredLayoutManager verrà FoldableStaggeredItemDecoration visualizzato come di consueto:

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

In modalità estesa, un Oggetto RecyclerView che usa FoldableStaggeredLayoutManager e FoldableStaggeredItemDecoration dividerà il contenuto tra le due schermate:

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

A partire dalla 1.0.0-beta4 versione, un RecyclerView che usa FoldableStaggeredLayoutManager e FoldableStaggeredItemDecoration dividerà anche il contenuto tra le due schermate su dispositivi piegabili. Ad esempio, si tratta di un aspetto sul Emulator orizzontale orizzontale 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))
    }
}