setSystemUiVisibility (SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION) funktioniert nicht

7

Ich habe mit setSystemUiVisibility () gekämpft, um zu versuchen, die weichen Navigationstasten für eine Weile (für einen Videoplayer) auszublenden. Es scheint nicht wie angekündigt zu funktionieren. Hier ist mein Code, in einem sichtbaren FrameLayout .

%Vor%

Leicht vom SDK-Beispiel geändert:

%Vor%

Sie tun nichts, wenn sie angerufen werden. Ich hatte Erfolg, als ich sie von einem anderen View aus anrief, aber die Dokumentation erwähnt nicht, dass die View , von der aus Sie anrufen, irgendeinen Effekt hat? Ich nehme an, dass die Dokumentation (Überraschungsüberraschung) hier etwas fehlt. Weiß jemand, was wirklich los ist?

    
Timmmm 06.01.2013, 01:06
quelle

4 Antworten

21

Hmm, anscheinend habe ich meine eigene Frage dupliziert! Wie auch immer, ich fand die Antwort: Nachdem ich den Quellcode gelesen hatte - was oft der einzige Weg ist, Dinge in Android-Land zu finden - entdeckte ich die folgende undokumentierte Tatsache:

setSystemUiVisibility () ist nur wirksam, wenn die Ansicht, von der Sie es aufrufen, sichtbar ist!

Mehr noch: Die Ansicht, in der Sie setSystemUiVisibility () aufrufen, muss bleiben sichtbar sein, damit die Navigationsleiste ausgeblendet bleibt. Danke für die Dokumentation dieser Jungs, wirklich großartig.

Hier ist der relevante Code in View.java .

%Vor%     
Timmmm 06.01.2013, 16:16
quelle
4

Ich verwende setOnSystemUiVisibilityChangeListener (), um diesen Vollbildmodus für mich arbeiten zu lassen und die Navigationsleiste auszublenden.

%Vor%

Es scheint, dass Android nur die setSystemUiVisibility () auslöst, wenn sie sich im Listener befindet.

    
Duran Jayson 21.10.2014 07:30
quelle
3

Ich habe dies wie unten implementiert, aber ich bekomme eine Lücke am unteren Rand (siehe Screenshot)

%Vor%

    
Golan Shay 07.02.2017 10:37
quelle
1

Sind Sie sicher, dass keine Benutzerinteraktion stattfindet? d. h. Emulation einer Berührung, die bewirkt, dass die Steuerungen sofort wieder erscheinen?

Von den Dokumenten :

  

SYSTEM_UI_FLAG_HIDE_NAVIGATION : Es gibt eine Einschränkung: Da Navigationssteuerelemente so wichtig sind, werden sie durch die geringste Benutzerinteraktion sofort wieder angezeigt. Wenn dies geschieht, werden sowohl dieses Flag als auch SYSTEM_UI_FLAG_FULLSCREEN automatisch gelöscht, so dass beide Elemente gleichzeitig wieder auftauchen.

Nebenbei bemerkt, ich habe Probleme mit der Ansicht festgestellt, dass die Größe unter bestimmten Umständen nicht geändert wird, auch nicht mit dem Video-Player in JB. Ich denke, es ist (oder war) ein Fehler.

    
Oleg Vaskevich 06.01.2013 01:11
quelle