Imposta Fragment su FullScreen durante l'utilizzo del componente di navigazione - Android

Aug 20 2020

Recentemente ho convertito la mia app in architettura Single Activity e ho provato a impostare un particolare frammento a schermo intero. Il codice a schermo intero standard per l'attività non funziona per i frammenti

final int flags =
            View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;

Ho trovato questo set Android a schermo intero da frammento . Ma impostarlo su FLAG_LAYOUT_NO_LIMITS fa sì che il PagerSnapHelper nel frammento salti quando si passa da FLAG_LAYOUT_NO_LIMITS e lo si revoca.

Quindi la mia domanda è: esiste un altro modo per impostare il frammento a schermo intero senza utilizzare FLAG_LAYOUT_NO_LIMITS.

Risposte

3 ianhanniballake Aug 21 2020 at 04:55

Non dovresti mai aver bisogno di usare FLAG_LAYOUT_NO_LIMITS, né dovresti applicare fitsSystemWindows="true"globalmente al tuo livello di attività: questo è ciò che impedirebbe al tuo frammento di andare a schermo intero. Invece, aggiungi solo fitsSystemWindowsi frammenti / singoli componenti che altrimenti si sovrapporrebbero alle barre di stato / sistema. Ciò garantirebbe che il frammento a schermo intero sia in grado di occupare l'intera dimensione e non essere inserito dai bordi.