2016-07-07 5 views
6

Ich bin auf der Suche nach meiner Android-App Vollbild, sondern nur die Android-Navigationsleiste auf einem bestimmten Bildschirm (meine Einstellungen Bildschirm). Ich weiß, dass es gefährlich ist, die Navigationsleiste dauerhaft auf einem Bildschirm auszublenden, aber ich möchte wissen, ob das möglich ist. Ich habe versucht, mein Gerät zu rooten und das Xposed-Framework zu verwenden.Programmatically aktivieren/deaktivieren Immersive Mode

Gibt es eine Möglichkeit, die Navigationsleiste oder den "sticky mode" programmatisch zu deaktivieren und später wieder zu aktivieren?

Edit: Ich habe den Android Immersive-Modus angesehen, aber es scheint, als ob die Navigationsleiste immer noch angezeigt wird, wenn der Benutzer die Kante berührt. Ich möchte jeden Hinweis auf die Navigationsleiste entfernen, bis sie zu meinem Einstellungsbildschirm gelangen.

Antwort

2

Ja, es ist möglich. Verwenden Sie das folgende Code-Snippet, um die gewünschte Funktionalität zu erreichen.

// This snippet hides the system bars. 
private void hideSystemUI() { 
    // Set the IMMERSIVE flag. 
    // Set the content to appear under the system bars so that the content 
    // doesn't resize when the system bars hide and show. 
    View decorView = getWindow().getDecorView(); 
    decorView.setSystemUiVisibility(
      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 // hide nav bar 
      | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar 
      | View.SYSTEM_UI_FLAG_IMMERSIVE); 
} 

// This snippet shows the system bars. It does this by removing all the flags 
// except for the ones that make the content appear under the system bars. 
private void showSystemUI() { 
    View decorView = getWindow().getDecorView(); 
    decorView.setSystemUiVisibility(
      View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
      | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 
      | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); 
} 

Weitere Details finden Sie die die folgenden Google-Dokumentation:

https://developer.android.com/training/system-ui/immersive.html

EDIT 1: Um es verstecken dauerhaft sein können Sie so etwas wie dieses (Hacky) könnten versuchen,

+0

Vielen Dank für Ihre Antwort. Ich habe mir das angesehen, bevor ich gepostet habe, aber meine Frage im Immersive-Modus war diese Zeile: "Der Benutzer kann die Systemleisten mit einem nach innen gerichteten Streichen entlang der Region offenlegen, in der die Systemleisten normalerweise erscheinen." Wäre das nicht das Verbergen()? Ich möchte das deaktivieren, bis der Benutzer zu meinem Einstellungsbildschirm geht. – Jason

+0

Ja es tut, in der Tat Benutzer wird ein Tutorial angezeigt, wenn er den immersiven Modus zum ersten Mal öffnet. Was sagt ihm, dass das Wischen nach unten den Vollbildmodus schließt. –

+0

Richtig, und ich möchte nicht, dass sie den Vollbildmodus schließen * es sei denn * sie gehen auf einen meiner anderen Bildschirme. Das ist meine wahre Frage. Ich möchte verhindern, dass Benutzer vollständig auf die Navigationsleiste zugreifen, bis sie zu einem bestimmten Bildschirm wechseln. – Jason