Ответ 1
Наша забота о тени AppBarLayout
видима, когда строка состояния прозрачна. Наличие непрозрачной строки статуса не является жизнеспособным в любое время. Это происходит на Lollipop и выше только из-за динамического теневого рендеринга. На Зефире неправильная тень выглядит еще хуже.
Лучшее решение
Ваш корневой макет должен иметь android:fitsSystemWindows="true"
в любое время, в противном случае ваш пользовательский интерфейс не будет опираться на строку состояния.
Теперь оберните AppBarLayout
внутри другого CoordinatorLayout
, который имеет android:fitsSystemWindows="false"
. Это предотвратит переполнение тени в строку состояния
Другие обходные пути (не рекомендуется)
В вашем стиле удалите statusBarColor:
<item name="android:statusBarColor">@android:color/transparent</item>
Итак, ваша тема:
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
</style>
Также вы можете просто сделать app: elevation = "0dp" на appbarlayout, но это также удаляет тень внизу.