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

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

Вызывает ретрансляцию представления списка (или подробного представления). Это заставляет вещи выглядеть рывками, а также может вызвать большую обработку, из-за которой кадры анимации пропадают. Для этого есть решение:

setSystemUiFlags(SYSTEM_UI_FLAG_LAYOUT_STABLE) в списке или

setSystemUiFlags(SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN) в подробном обзоре

Но они вообще не работают ниже API 16 (я ориентируюсь на API 14 и выше) и работают непоследовательно между производителями даже с API 16 и выше.

Есть ли способ скрыть строку состояния, не вызывая ретрансляции, или просто остановить создание макета на некоторое время?

4
Abhay Buch 11 Окт 2013 в 03:41
Просто подумал, не знаю, будет ли это работать так, как нужно: вы пробовали установить android:fitsSystemWindows="false" на ListView, или, возможно, это родительский?
 – 
Paul Burke
11 Окт 2013 в 06:08

1 ответ

Лучший ответ

Как насчет FLAG_LAYOUT_IN_SCREEN и FLAG_LAYOUT_INSET_DECOR? Тогда ваше окно всегда будет расширяться под строкой состояния, и вам нужно будет следить за вставками, чтобы убедиться, что вы не перекрываете их содержимым, но таким образом вы не должны снова быть выложены, когда строка состояния скрывается или показывает.

3
dsandler 11 Окт 2013 в 09:12