Анимация окна перекрывает панель навигации на Android 5.0

Я реализую шаблон дизайна Material Design нижний лист в своем приложении, используя собственный подкласс. из Dialog. Диалог тяготеет к нижней части экрана и использует анимацию ввода окна y-перевода:

<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:interpolator/decelerate_cubic">
    <translate android:fromYDelta="100%"
        android:toYDelta="0"
        android:duration="250" />
</set>

В более ранних версиях Android это выглядит великолепно (если я сам так говорю): диалоговое окно плавно выдвигается из нижней части экрана и из под панели навигации.

Однако в последнем изображении для предварительного просмотра 5.0 анимация окон происходит в верхней части панели навигации, поэтому содержимое диалогового окна временно перекрывает навигацию. С этим конкретным вариантом использования это выглядит некрасиво, странно и отвлекает.

Есть ли что-нибудь, что я могу установить в своей теме или коде, чтобы предотвратить это?


person Veeti    schedule 29.10.2014    source источник
comment
Какой код вы используете для запуска анимации? Как реализован ваш пользовательский подкласс Dialog?   -  person Alex Lockwood    schedule 31.10.2014
comment
Пожалуйста, покажите свой основной xml-файл, в котором существуют все ваши представления.   -  person Mohammed Ali    schedule 05.11.2014
comment
Анимация окна задается через указанный ресурс темы XML диалогового окна.   -  person Veeti    schedule 07.11.2014
comment
Вы в итоге решили эту проблему?   -  person Ivan    schedule 13.06.2018


Ответы (2)


Просто используйте

<item name="android:windowDrawsSystemBarBackgrounds">false</item>

для деятельности, где вы показываете свой диалог. В этом случае ваш диалог будет находиться под панелью навигации во время анимации.

person Alex Perevozchykov    schedule 01.11.2016
comment
Это устраняет проблему, однако строка состояния не является прозрачной при использовании вышеуказанного флага. - person Oleksii Shliama; 18.11.2016
comment
При этом анимация нижнего листа по-прежнему перекрывает мягкую панель навигации, но не так явно, как по умолчанию. Есть ли способ заставить его полностью выйти из представления под программной панелью навигации? - person Ivan; 08.06.2018
comment
Не обращайте внимания на мой предыдущий комментарий. Это работает, если продолжительность анимации замедлена до более чем 1,5 секунды. Однако хотелось бы, чтобы это работало для любой продолжительности анимации. - person Ivan; 11.06.2018

С сайта разработчиков Android:

В этом выпуске Android представлен новый виджет Панели инструментов. Это обобщение шаблона панели действий, которое дает вам гораздо больше контроля и гибкости. Панель инструментов — это такое же представление в вашей иерархии, как и любое другое, упрощающее чередование с остальными представлениями, его анимацию и реакцию на события прокрутки. Вы также можете установить его в качестве панели действий вашей активности, что означает, что ваши стандартные действия меню параметров будут отображаться внутри него.

Таким образом, панель действий теперь является представлением в вашем макете, поэтому всплывающее окно перемещается по ней. Я также знаю, что они ввели некоторые свойства z-index, это может быть полезно для вас.

person MineConsulting SRL    schedule 04.11.2014
comment
Я говорю не о панели действий, а о панели навигации устройства (назад, домой, недавние). - person Veeti; 07.11.2014