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
.
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?
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
.
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.
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 auchSYSTEM_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.
Tags und Links android android-layout android-fullscreen