6

Ich möchte eine Schaltfläche implementieren, um den immersiven Vollbildmodus zu aktivieren/deaktivieren. Ich benutze diese Methoden, aber die showSystemUI zeigt nur schnell und wieder ausblenden ...Wie kann ich den Vollbildmodus Immersive beenden?

Wie vollständig aus Immersive-Modus beenden?

Meine Methoden:

// This snippet hides the system bars. 
    @SuppressLint("NewApi") 
    private void hideSystemUI() { 
     try{ 
      // 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. 
      mDecorView.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); 
     }catch(Exception e){ 
      getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
        WindowManager.LayoutParams.FLAG_FULLSCREEN); 
     } 
    } 

    // 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. 
    @SuppressLint("NewApi") 
    private void showSystemUI() { 
     try{ 
      mDecorView.setSystemUiVisibility(
        View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
          | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 
          | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); 
     }catch(Exception e){ 
      getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 

      mDecorView.setVisibility(View.GONE); 
      mDecorView.setVisibility(View.VISIBLE); 
      WindowManager.LayoutParams attrs = getWindow().getAttributes(); 
      attrs.flags |= WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS; 
      getWindow().setAttributes(attrs); 
      mDecorView.setPadding(0, getStatusBarHeight(), 0, 0); 
     } 
    } 

Wie wieder den Inhalt erscheint unter dem System Bars machen?

+0

, wo Sie diese Methoden aufrufen? –

+0

In der OnClick-Methode eines ToggleButton. Wenn der FullScreenButton isChecked ist, wird hideSystemUi aufgerufen. Wenn der FullScreenButton nicht aktiviert ist, rufen Sie die showSystemUI auf. (Denken Sie daran, dies ist nur auf klicken in Fullscreenbutton aufgerufen. –

+0

Kann mir jemand helfen? –

Antwort

11

Aufruf setSystemUiVisibility() mit View.SYSTEM_UI_FLAG_VISIBLE löscht alle Fahnen:

getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE); 
+4

Oder verwenden Sie die Konstante in View 'setSystemUiVisibility (View.SYSTEM_UI_FLAG_VISIBLE);' – Gomino