Странное поведение макета с помощью fitsSystemWindows - PullRequest
0 голосов
/ 27 июня 2019

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

https://i.imgur.com/FpT1tzf.jpg

Как видите, карта простирается до краевэкран, в то время как различные кнопки остаются за пределами панели состояния и навигации.Однако я сделал это довольно глупо:

styles.xml:

<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
    <item name="android:windowTranslucentStatus">true</item>
    <item name="android:windowTranslucentNavigation">true</item>
</style>

layout.xml:

https://gist.github.com/artificialnull/20192510ff22e86b42e2436fe68f75ae

По сути, у меня есть fitsSystemWindows=false для окружающих DrawerLayout и ConstraintLayout.Интерьер MapView имеет то же самое, и он простирается ниже панели состояния и навигации.ImageButton в левом верхнем углу имеет fitsSystemWindows=true, и он не идет под системным интерфейсом.FAB - сложная часть: прямо сейчас они ограничены позицией выше Guideline, который установлен во время выполнения в верхней части панели навигации.Это явно не идеально, поэтому я попытался добавить fitsSystemWindows=true к обоим FAB и удалить вышеупомянутый Guideline.Это не изменило тот факт, что FAB были нарисованы под панелью навигации;однако, что еще более запутанно, так это то, что после внесения этих изменений ImageButton, который ранее был в порядке, переместился в строку состояния вверху.ImageButton никак не зависит от FAB для его размещения, поэтому я не знаю, почему изменение FAB должно повлиять на ImageButton.

Мне не удалось найти решение этой проблемы в StackOverflow или где-либо еще.Я понимаю, что мое текущее решение (с позицией Guideline во время выполнения) не является хорошей практикой, но я не могу найти другое лучшее решение, которое действительно работает.Любой совет приветствуется!

...