2017-05-31 5 views
1

Ich erstelle eine Kamera-App mit einem Popup-Menü für einige Kameraeinstellungen. Das Problem ist, wenn ich auf die Schaltfläche klicke, die das Popup-Menü anzeigt, erscheint die untere Navigationsleiste. Ich habe schon online nach einer Lösung gesucht, aber bisher hat mir noch nichts geholfen.Navigationsleiste erscheint auf PopupMenu im Immersive-Modus

mChangeSettingsButton.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      final PopupMenu changeSettingsPopupMenu = new PopupMenu(Camera2VideoImageActivity.this, mChangeSettingsButton) { 
       @Override 
       public void show() { 

        getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE); 
        super.show(); 

        getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
            | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY 
            | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 
            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 
            | View.SYSTEM_UI_FLAG_FULLSCREEN 
            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); 


        getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE); 

       } 


      };changeSettingsPopupMenu.getMenuInflater().inflate(R.menu.change_setting_popup_menu, changeSettingsPopupMenu.getMenu()); 

      SubMenu changeImageResolutionSubMenu = changeSettingsPopupMenu.getMenu().addSubMenu(0, 100, 0, "Set Image Resolution "); 
      SubMenu changeVideoResolutionSubMenu = changeSettingsPopupMenu.getMenu().addSubMenu(0, 101, 0, "Set Video Resolution"); 
      changeSettingsPopupMenu.show(); 
} 

ich dies auch auf meine Hauptaktivität:

@Override 
public void onWindowFocusChanged(boolean hasFocus) { 
    super.onWindowFocusChanged(hasFocus); 
    if (hasFocus) { 
     getWindow().getDecorView().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 
         | View.SYSTEM_UI_FLAG_FULLSCREEN 
         | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); 
    } 

<iframe src="https://giphy.com/embed/3oKIPh2W4bEQrGzmqQ" width="272" height="480" frameBorder="0" class="giphy-embed" allowFullScreen></iframe><p><a href="https://giphy.com/gifs/3oKIPh2W4bEQrGzmqQ">via GIPHY</a></p>

GIF, was passiert: http://gph.is/2rjPdny

EDIT: Dank Hitesh Gehlot für die Antwort! Ich verstehe das, wenn ich es versuche. This didn't work, Click to view image

Antwort

0

versuchen Sie dies:

changeSettingsPopupMenu.getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE); 
     changeSettingsPopupMenu.getWindow().getDecorView().setSystemUiVisibility(getWindow().getDecorView().getSystemUiVisibility()); 
changeSettingsPopupMenu.show(); 
+0

Danke für die Antwort! Ich habe das versucht, aber ich habe "kann getWindow() nicht auflösen". Bitte überprüfen Sie meine Bearbeitung auf dem ursprünglichen Post für den Screenshot. –

Verwandte Themen