web-dev-qa-db-de.com

Android: Statusleiste/Energiebalken ein-/ausblenden

Ich versuche, eine Schaltfläche zu erstellen, mit der ich die Statusleiste auf meinem Tablet anzeigen oder ausblenden kann.

Ich habe den onCreate eingefügt

getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);

und in den Buttonsshow: 

WindowManager.LayoutParams attrs = getWindow().getAttributes();
attrs.flags &= ~WindowManager.LayoutParams.FLAG_FULLSCREEN;
getWindow().setAttributes(attrs);

verbergen:

WindowManager.LayoutParams attrs = getWindow().getAttributes();
attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
getWindow().setAttributes(attrs);

Irgendwelche Tipps/Tipps?

//bearbeiten

Ich habe mir diesen Hinweis hier angesehen: http://Android.serverbox.ch/?p=306 Und meinen Code folgendermaßen geändert:

private void hideStatusBar() throws IOException, InterruptedException {
    Process proc = Runtime.getRuntime().exec(new String[]{"su","-c","service call activity 79 s16 com.Android.systemui"});
    proc.waitFor();
}

private void showStatusBar() throws IOException, InterruptedException {
    Process proc = Runtime.getRuntime().exec(new String[]{"am","startservice","-n","com.Android.systemui/.SystemUIService"});
    proc.waitFor();
}

Wenn ich also auf meine Buttons klicke und die Methoden heißen, kann ich sehen, dass etwas passiert, weil die App einige Sekunden wartet ... Ich habe auch in LockCat nachgesehen und festgestellt, dass etwas passiert.

show: http://Pastebin.com/CidTRSTi hide: http://Pastebin.com/iPS6Kgbp

30
B770

Haben Sie das Vollbild-Thema im Manifest festgelegt?

Android:theme="@Android:style/Theme.NoTitleBar.Fullscreen"

Ich glaube nicht, dass Sie ohne dieses Bild in den Vollbildmodus gehen können.

Ich würde folgendes verwenden, um das Vollbild-Flag hinzuzufügen und zu entfernen:

// Hide status bar
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
// Show status bar
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
105
Rob

Bei einigen Personen funktioniert das Anzeigen der Statusleiste durch Löschen von FLAG_FULLSCREEN möglicherweise nicht. 

Hier ist die Lösung, die für mich funktioniert hat ( Dokumentation ) ( Flag Reference

Statusleiste verstecken

// Hide Status Bar
if (Build.VERSION.SDK_INT < 16) {
            getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                    WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
else {
   View decorView = getWindow().getDecorView();
  // Hide Status Bar.
   int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
   decorView.setSystemUiVisibility(uiOptions);
}

Zeige Statusleiste

   if (Build.VERSION.SDK_INT < 16) {
              getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
    }
    else {
       View decorView = getWindow().getDecorView();
      // Show Status Bar.
       int uiOptions = View.SYSTEM_UI_FLAG_VISIBLE;
       decorView.setSystemUiVisibility(uiOptions);
    }
32
Pradeep

Für Kotlin-Nutzer

ZU ZEIGEN

activity?.window?.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)

ZU AUSBLENDEN

activity?.window?.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)

2
Muhamed Riyas M

wird für Kolin in Android verwendet, um die Statusleiste in Kolin auszublenden. Am Ende der Zeile muss kein Semikolon (;) verwendet werden

window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)

in Android mit Java Sprache für versteckte Statusleiste

getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
1
Prabh deep

bei dieser Methode wird mithilfe von SYSTEM_UI_FLAG_IMMERSIVE_STICKY der Vollbildmodus mit einem Fingertipp ohne Implementierung wiederhergestellt. Kopieren Sie diese Methode einfach weiter unten und rufen Sie sie an der gewünschten Stelle in Ihrer Aktivität auf. Weitere Details hier

private void hideSystemUI() {
    getWindow().getDecorView().setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_IMMERSIVE
                    // Set the content to appear under the system bars so that the
                    // content doesn't resize when the system bars hide and show.
                    | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    // Hide the nav bar and status bar
                    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_FULLSCREEN);
}
0
Nicoolasens
 @Override
 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //hide status bar
    requestWindowFeature( Window.FEATURE_NO_TITLE );
    getWindow().setFlags( WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN );


    setContentView(R.layout.activity_main);
}
0
Nihal Desai

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

// 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() {
    mDecorView.setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_LAYOUT_STABLE
            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
}
0
Varun Bhatia
fun Activity.setStatusBarVisibility(isVisible: Boolean) {
    //see details https://developer.Android.com/training/system-ui/immersive
    if (isVisible) {
        window.decorView.systemUiVisibility = (View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN)
        window.decorView.systemUiVisibility = (View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN)
    } else {
        window.decorView.systemUiVisibility = (View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                or View.SYSTEM_UI_FLAG_FULLSCREEN)
    }
}
0
Yazon2006

wird in Android für Kolin verwendet Zum Ausblenden der Statusleiste in Kolin müssen Sie kein Semikolon (;) am Zeilenende verwenden 

window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)

in Android mit Java für verborgene Statusleiste

getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
0
Prabh deep