2016-12-29 14 views
0

Я пытаюсь скрыть навигационную панель моего проекта. Вот мой кодСкрыть navigatiobar

private void hideNavigationBar() { 
     View decorView = getWindow().getDecorView(); 
     int uiOptions = 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; 
     decorView.setSystemUiVisibility(uiOptions); 
    } 

Я вызываю эту функцию в своей функции onResume(). Но когда я открываю popupwindow в своей активности, снова появляется панель навигации. Как я могу решить свою проблему?

ответ

0

Попробовать это на весь экран

public void fullScreenCall() { 
    if(Build.VERSION.SDK_INT > 11 && Build.VERSION.SDK_INT < 19) { // lower api 
     View v = this.getWindow().getDecorView(); 
     v.setSystemUiVisibility(View.GONE); 
    } else if(Build.VERSION.SDK_INT >= 19) { 
     //for new api versions. 
     View decorView = getWindow().getDecorView(); 
     int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY; 
     decorView.setSystemUiVisibility(uiOptions); 
    } 
} 

только скрыть панель навигации, является:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    final View decorView = getWindow().getDecorView(); 
    decorView.setOnSystemUiVisibilityChangeListener (new View.OnSystemUiVisibilityChangeListener() { 
     @Override 
     public void onSystemUiVisibilityChange(int visibility) { 
      if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) { 
       decorView.setSystemUiVisibility(
         View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
           | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 
           | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION 
           | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); 
      } 
     } 
    }); 
} 

@Override 
protected void onResume() { 
    super.onResume(); 
    final int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION; 
    final View decorView = getWindow().getDecorView(); 
    decorView.setSystemUiVisibility(uiOptions); 
} 
0

От андроида doc

  • При таком подходе, касаясь в любом месте на экране заставляет навигационную панель (и строку состояния) собирать груши и остаются видимыми. Пользовательское взаимодействие заставляет флаги очищаться.
  • Как только флаги были очищены, вашему приложению необходимо сбросить их, если вы хотите снова скрыть панели. См. Responding to UI Visibility Changes для обсуждения того, как прослушивать изменения видимости пользовательского интерфейса, чтобы ваше приложение могло соответственно реагировать.
0

Вы должны использовать его в onWindowFocusChanged обратного вызова.

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

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

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