Я работаю над приложением, которое имеет представление списка и представление деталей, и я анимирую из представления списка в представление деталей. При этом я хотел бы на каком-то этапе скрыть строку состояния (желательно, пока все еще отображается представление списка в фоновом режиме). Проблема в том, что скрытие строки состояния с помощью
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 и выше.
Есть ли способ скрыть строку состояния, не вызывая ретрансляции, или просто остановить создание макета на некоторое время?
1 ответ
Как насчет FLAG_LAYOUT_IN_SCREEN и FLAG_LAYOUT_INSET_DECOR? Тогда ваше окно всегда будет расширяться под строкой состояния, и вам нужно будет следить за вставками, чтобы убедиться, что вы не перекрываете их содержимым, но таким образом вы не должны снова быть выложены, когда строка состояния скрывается или показывает.
Похожие вопросы
Связанные вопросы
Новые вопросы
android
Android — это мобильная операционная система Google, используемая для программирования или разработки цифровых устройств (смартфонов, планшетов, автомобилей, телевизоров, одежды, очков, IoT). Для тем, связанных с Android, используйте теги, специфичные для Android, такие как android-intent, android-activity, android-adapter и т. д. Для вопросов, отличных от разработки или программирования, но связанных с Android framework, используйте эту ссылку: https://android .stackexchange.com.
android:fitsSystemWindows="false"
наListView
, или, возможно, это родительский?