Я пробую AppCompat на Marshmallow. И я хочу, чтобы строка состояния была прозрачной, но она стала белой. Я пробовал несколько решений, но они не сработали для меня ( прозрачная строка состояния не работает с windowTranslucentNavigation = "false" , Lollipop: рисовать за statusBar с прозрачным цветом ). Вот связанный код.
Мой styles.xml
<style name="Bacon" parent="Theme.Bacon"/>
<style name="Theme.Bacon" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/theme_primary</item>
<item name="colorPrimaryDark">@color/theme_primary_dark</item>
<item name="colorAccent">@color/theme_accent</item>
<item name="windowActionBar">false</item>
<item name="windowActionBarOverlay">true</item>
<item name="windowNoTitle">true</item>
<item name="android:windowBackground">@color/background_material_light</item>
</style>
<style name="Theme.Bacon.Detail" parent="Bacon"/>
v21
<style name="Bacon" parent="Theme.Bacon">
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
</style>
<style name="Theme.Bacon.Detail" parent="Bacon">
<item name="android:statusBarColor">@android:color/transparent</item>
</style>
Деятельность
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true" />
</FrameLayout>
Фрагмент
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="192dp"
android:fitsSystemWindows="true"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
app:contentScrim="?attr/colorPrimary"
app:expandedTitleMarginBottom="32dp"
app:expandedTitleMarginEnd="64dp"
app:expandedTitleMarginStart="48dp"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
app:statusBarScrim="@color/black_trans80">
<ImageView
android:id="@+id/photo"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:contentDescription="@string/photo"
android:fitsSystemWindows="true"
android:scaleType="centerCrop"
app:layout_collapseMode="parallax" />
<android.support.v7.widget.Toolbar
android:id="@+id/anim_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
Ответы:
Я нашел ответ по этой ссылке: Цвет строки состояния не меняется с относительным макетом в качестве корневого элемента
Оказывается, нам нужно удалить
в styles.xml (v21). И у меня это отлично работает.
источник
(Немного поздно на вечеринку, но это может кому-то помочь)
У меня была точно такая же проблема. Почему-то некоторые действия были нормальными, в то время как новые, которые я создал, отображали белую строку состояния вместо
colorPrimaryDark
значения.Попробовав несколько советов, я заметил, что все обычные рабочие действия используются
CoordinatorLayout
в качестве корня макета, в то время как для других я заменил его обычными макетами, потому что мне не нужны функции (анимация и т. Д.), ПредоставляемыеCoordinatorLayout
.Итак, решение состоит в том, чтобы создать
CoordinatorLayout
корневой макет, а затем внутри него добавить свой прежний корневой макет. Вот пример:ОБРАТИТЕ ВНИМАНИЕ, что без
android:fitsSystemWindows="true"
этого решения у меня не работает.Проверено на Lollipop и Marshmallow
источник
android:fitsSystemWindows="true"
кCoordinatorLayout
в Android 8.CoordinatorLayout
когда я столкнулся с той же проблемой, и конкретное свойство, которое исправило это для меня, былоandroid:fitsSystemWindows="true"
android:fitsSystemWindows="true"
меня не сработало. Моя проблема была решена с помощью темы, которой нетAppTheme.NoActionBar
в действии с расширениемCoordinatorLayout
. Я не знаю, почему это исправило.CoordinatorLayout
илиandroid:fitsSystemWindows="true"
ни то, ни другое не работает для меня.источник
Вы должны добавить это свойство в свой стиль, чтобы видеть контент
источник
Добавьте это в свой style.xml
и это в вашем onCreate ();
источник
После безуспешной попытки всего вышеперечисленного я обнаружил, что явная установка темы устранила проблему.
Это должно произойти до super.OnCreate () в вашей деятельности.
источник
Просто поместите этот элемент в свой v21 \ styles.xml:
правда
Должно получиться так:
источник
false
значения в последних двух элементах. Странно, но спасибо.Я столкнулся с той же проблемой. Я сделал следующее: в файле "v21 / styles.xml" изменилось значение true:
кому:
источник
Вы увидите эту строку кода в values / styles / styles.xml (v21). Удалите его, и это решит проблему
Ссылка на этот ответ
источник
Я исправил свою проблему, изменив макет Activity с FrameLayout на RelativeLayout. Спасибо всем, кто пытался помочь!
Попробуйте программу просмотра иерархии или ViewInspector . Эти инструменты могут вам помочь.
источник
Просто удалите следующий тег из стиля v21 @android: color / transparent
У меня это работает.
источник
Лучший подход
Проверьте свой файл style.xml, в котором находится ваша тема NoActionBar. Убедитесь, что у него есть родительский элемент как Theme.AppCompat.NoActionBar, а также настройте его, добавив свою цветовую схему. Наконец, установите свои темы в манифесте по мере необходимости.
Ниже приведен образец моего файла styles.xml (ActionBar + NoActionBar).
источник
Я нашел решение для этого -
добавьте это в свой стиль, и он будет работать с API 21 или выше.
источник
Для меня это сработало, выполнив следующие действия:
.NoActionBar
android.support.design.widget.AppBarLayout
android.support.design.widget.CoordinatorLayout
как родительский макет.По сути, это третий шаг, на котором отображается строка состояния, в
colorPrimaryDark
противном случае она не отображается, если вы используетеNoActionBar
тему. 2-й шаг даст вашей панели инструментов это наложение .источник
Для стилей v23
Для стилей v21
источник
[
Разверните каталог res -> values -> styles из панели проекта.
Откройте файл styles.xml (v21)
ИСПОЛЬЗУЙТЕ ЛЮБОЙ ИЗ СПОСОБОВ НИЖЕ
android:windowDrawsSystemBarBackgrounds
свойстве.android:statusBarColor
свойстве.android:statusBarColor
строку свойства.источник
Если ваш v21 / styles.xml содержит
Затем удалите или прокомментируйте строку ниже или измените цвет строки состояния,
Он работает нормально. Надеюсь, это будет полезно. Спасибо.
источник
Я не уверен, что уже поздно, но надеюсь, что это кому-то поможет. * Сделайте поддельный вид с прозрачным фоном, который соответствует макету, и сделайте координатор макета в качестве корневого элемента макета.
источник
Это работа для меня
источник
Я предполагаю, что это вызвано вашим
android:windowBackground
. Это@color/background_material_light
ссылка на белый цвет?источник
<item name="android:statusBarColor">@android:color/transparent</item>
на<item name="android:statusBarColor">@null</item>
.Убедитесь, что эта панель инструментов становится белой - AppBar не отображается после прокрутки с экрана
https://code.google.com/p/android/issues/detail?id=178037#c19
Использую библиотеки 23.0.0. и ошибка все еще возникает.
Обходной путь для этого - добавление представления, которое почти не занимает места и может быть невидимым. См. Структуру ниже.
Эти вопросы на Stackoverflow.com также относятся к этой ошибке: Панель инструментов CoordinatorLayout невидима при входе до полной высоты AppBarLayout - Макет иногда невидим, когда он входит в представление (даже если он не введен)
источник
Если вы используете RelativeLayout / CoordinatorLayout это решение, которое сработало для меня:
Вы должны использовать
Не забывайте использовать CoordinatorLayout вместо RelativeLayout (производительность лучше и отлично работает с AppBarLayout)
Вот как должен начинаться ваш фрагмент
Хорошая кодировка!
источник
добавить в стили элемент windowTranslucentStatus
источник
Добавьте это в свой style.xml
Примечание. Цвет строки состояния не поддерживается ниже 21 уровня API.
источник
Добавьте эти 2 строки в файл java ниже
источник