6

Я хотел бы реализовать кнопку, чтобы включить/отключить режим полного погружения. Я использую эти методы, но showSystemUI показывает только быстро и снова скрывается ...Как полностью выйти из полноэкранного режима Immersive?

Как полностью выйти из погружного режима?

Мои методы:

// 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); 
     } 
    } 

Как сделать содержание вновь появляются под системные бары?

+0

где вы называете эти методы? –

+0

В методе onClick ToggleButton. Если FullScreenButton isChecked, вызывает hideSystemUi. Если FullScreenButton не установлен, вызовите showSystemUI. (Помните, что это вызвано только щелчком в полноэкранном режиме. –

+0

Любой может мне помочь? –

ответ

11

Вызов setSystemUiVisibility() с View.SYSTEM_UI_FLAG_VISIBLE очищает все флаги:

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

Или используйте константу в представлении 'setSystemUiVisibility (View.SYSTEM_UI_FLAG_VISIBLE);' – Gomino

 Смежные вопросы

  • Нет связанных вопросов^_^