Эта проблема на самом деле возникла в более сложной ситуации, связанной с изменениями ориентации и различными макетами для портретной и ландшафтной архитектуры, но в ее минимальной версии проблема такова:Как восстановить систему из SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION?
Мы хотели бы переключаться между «нормальными» и «нормальными», полноэкранный "макет, т.е. е .:
- один макет, в котором содержание только занимает место, что осталось внутри панели навигации и панели состояния
- один макет, где содержание занимает весь экран и слайды в рамках как навигации и панели состояния
для переключения из нормальных в полноэкранном режиме мы используем:
public static final int EXPAND_FLAGS = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION;
getWindow().getDecorView().setSystemUiVisibility(EXPAND_FLAGS);
И переключиться обратно мы пытались:
public static final int SHRINK_FLAGS = View.SYSTEM_UI_FLAG_VISIBLE;
getWindow().getDecorView().setSystemUiVisibility(SHRINK_FLAGS);
Таким образом, из этого
мы первый "развернуть" на это:
но "усадка" назад не работает:
Итак, кажется, что, хотя активности разрешено рисовать внутри пользовательского интерфейса системы, он все еще «думает», что он должен оставить пространство для пользовательского интерфейса системы.
Так что я задаю вопрос: что должно быть SHRINK_FLAGS
в моем коде выше или что я должен делать совершенно по-другому?
Мы используем AppCompatActivity
с темой Theme.AppCompat.Light.DarkActionBar
.
Я не понимаю, как это работает, но вы спасли мою задницу, спасибо! –