0

У меня есть активность с двумя панелями инструментов, одна сверху и одна внизу. Я использую инверсивный режим и теперь это работает отлично, это позволяет пользователю перетащить строку состояния вниз ...Иммерсивный режим - только скрывать строку состояния + статус строки состояния через некоторое время без взаимодействия пользователя

Проблемы, строка состояния никогда не скрыта снова, после того, как он был замедлен ...

Я нашел несколько решений здесь, но я просто не мог заставить его работать. Либо в строке состояния отображается над моей точки зрения, или путает, если открыть меню переполнения или он просто не получает скрыт снова ...

Это то, что я в настоящее время используют:

@Override 
protected void onResume() 
{ 
    super.onResume(); 
    enableFullScreenMode(); 
} 

private void enableFullScreenMode() 
{ 
    if (Build.VERSION.SDK_INT < 16) 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    else 
     getWindow().getDecorView().setSystemUiVisibility(
       View.SYSTEM_UI_FLAG_FULLSCREEN 
//       | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 
//       | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION 
     ); 
} 

то, что я хочу

  • всегда полноэкранный режим до тех пор, пока пользователь не тащит вниз строку состояния
  • после, например 3s в строке состояния должен быть скрыт снова, если он не был открыт
  • после закрытия строки состояния он должен быть скрыт снова
  • при открытии моего меню переполнения в панели инструментов, строка состояния НЕ должна показать
+0

немецких комментарии. .. – martyglaubitz

+0

Убрал единственный комментарий ... Nit-picky и непродуктивный комментарий, хотя ... – prom85

+0

, чтобы быть справедливым - я работаю над той же проблемой и выложу вам решение, когда я его найду;) – martyglaubitz

ответ

0

попробовать это:

View decorView = getWindow().getDecorView(); 
decorView.setOnSystemUiVisibilityChangeListener 
     (new View.OnSystemUiVisibilityChangeListener() { 
    @Override 
    public void onSystemUiVisibilityChange(int visibility) { 
     // Note that system bars will only be "visible" if none of the 
     // LOW_PROFILE, HIDE_NAVIGATION, or FULLSCREEN flags are set. 
     if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) { 
      // TODO: The system bars are visible. Make any desired 
      // adjustments to your UI, such as showing the action bar or 
      // other navigational controls. 
     } else { 
      // TODO: The system bars are NOT visible. Make any desired 
      // adjustments to your UI, such as hiding the action bar or 
      // other navigational controls. 
     } 
    } 
}); 
Смежные вопросы