Verwenden von SystemUiHider, um die Navigationsleiste verborgen zu halten

8

In älteren Versionen von Android war es notwendig, im Manifest android:theme="@android:style/Theme.NoTitleBar.Fullscreen" zu verwenden, um die Titelleiste verschwinden zu lassen.

In den neueren ADT-Versionen habe ich eine SystemUiHider -Klasse bemerkt, mit der Sie Aufrufe der Methode hide() ausführen können, um nicht nur die Titelleiste, sondern auch die Aktionsleiste und die Navigationsleiste zu entfernen.

Ich versuche, eine Vollbild-App zu schreiben, die ich im Vollbildmodus behalten möchte (für eine Kiosk-Implementierung), es sei denn, eine kleine versteckte Schaltfläche wird gedrückt.

Ich habe versucht, die Standard-FullscreenActivity (generiert aus dem neuen Android-Projektassistenten) zu verwenden und zu verhindern, dass die Benutzeroberfläche auf verschiedene Arten wieder angezeigt wird:

  • Aufrufe von mSystemUiHider.hide() in setOnVisibilityChangeListener (um zu versuchen, die Benutzeroberfläche sofort auszublenden, wenn eine Sichtbarkeitsänderung festgestellt wird)
  • Einstellung: AUTO_HIDE_DELAY_MILLIS = 0 (um es zu versuchen und sofort zu verstecken, wenn es sichtbar ist)
  • Verhindern des Aufrufs von mSystemUiHider.show(); in der onClick -Methode von contentView.setOnClickListener (um zu verhindern, dass sie angezeigt wird)
  • Ich habe auch das setSystemUiVisibility -Beispiel in der Dokumentation von android.view gesehen (erneut versuchen, es sofort zu verstecken, wenn es angezeigt wird oder die Sichtbarkeit geändert wird)

Keiner von ihnen scheint zu funktionieren (Android verwendet standardmäßig den Low-Profile-Modus für die Navigationsleiste, wenn einer davon ausprobiert wird.

Ich verstehe, dass Entwickler wahrscheinlich nicht wollen, dass Entwickler das tun, was ich versuche, aber ich hatte gehofft, dass ich SystemUiHider (und / oder SystemUiHiderBase ) erweitern und die show() -Methoden im Wesentlichen überschreiben könnte nicht angezeigt, es sei denn, es wurde eine true -Flag übergeben. Ich kann anscheinend keine Dokumentation zu einer dieser Klassen finden (vielleicht, weil sie Utility-Klassen sind?).

    
Jono 28.01.2013, 02:20
quelle

1 Antwort

1

Jede Interaktion mit dem Gerät bringt die Navigationsleiste zurück.

Ссылка

    
Charles Munger 31.01.2013 13:06
quelle