Я искал документацию, но нашел только это: Ссылка . Что используется, чтобы сделать бар прозрачным ? Я пытаюсь сделать строку состояния полностью прозрачной (как показано на рисунке ниже) и сделать ее обратно совместимой для APK <19:
Мой styles.xml:
<resources xmlns:tools="http://schemas.android.com/tools">
<style name="AppTheme" parent="Theme.AppCompat.Light">
<item name="android:actionBarStyle">@style/ThemeActionBar</item>
<item name="android:windowActionBarOverlay">true</item>
<!-- Support library compatibility -->
<item name="actionBarStyle">@style/ThemeActionBar</item>
<item name="windowActionBarOverlay">true</item>
</style>
<style name="ThemeActionBar" parent="Widget.AppCompat.Light.ActionBar.Solid">
<item name="android:background"> @null </item>
<!-- Support library compatibility -->
<item name="background">@null</item>
<item name="android:displayOptions"> showHome | useLogo</item>
<item name="displayOptions">showHome|useLogo</item>
</style>
</resources>
Что я смог сделать:
android:fitsSystemWindows="true"
в мой activity_main.xml. Панели системы являются полупрозрачными и не прозрачными.<item name="android:statusBarColor">@android:color/transparent</item>
к вашей теме :)android:windowTranslucentStatus
значение false, и строка состояния стала прозрачной. Теперь я сделал то же самое с панелью навигации и добавил,<item name="android:navigationBarColor">@android:color/transparent</item>
но она делает серые обе панели. UGH!w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);
вместо этогоПросто добавьте эту строку кода в ваш основной файл Java:
источник
Вы можете использовать внешнюю библиотеку StatusBarUtil :
Добавьте на свой уровень модуля
build.gradle
:Затем вы можете использовать следующую утилиту для действия, чтобы сделать строку состояния прозрачной:
Пример:
источник
Работает для Android KitKat и выше (для тех, кто хочет прозрачно отображать строку состояния и не манипулирует навигационной панелью, потому что все эти ответы также будут прозрачной навигационной панелью!)
Самый простой способ добиться этого:
Поместите эти 3 строки кода в
styles.xml (v19)
->, если вы не знаете, как это сделать (v19), просто напишите их по умолчанию,styles.xml
а затем используйте alt+, enterчтобы автоматически создать его:А теперь перейдите в ваш
MainActivity
класс и выведите этот метод из onCreate в классе:Затем поместите этот код в
onCreate
метод Activity:Это оно!
источник
Полностью прозрачная панель состояния и панель навигации
источник
Чтобы нарисовать макет под строкой состояния:
Значения / styles.xml
Значения-V21 / styles.xml
Используйте CoordinatorLayout / DrawerLayout, который уже позаботится о параметре fitsSystemWindows, или создайте свой собственный макет так:
main_activity.xml
Результат:
Скриншот:
источник
Вы можете использовать код ниже, чтобы сделать строку состояния прозрачной. Смотрите изображения с красной подсветкой, которая поможет вам определить использование кода ниже
Фрагмент кода Kotlin для вашего приложения для Android
Шаг: 1 Запишите код в методе создания
Шаг 2: Вам нужен метод SetWindowFlag, который описан ниже.
Фрагмент кода Java для вашего приложения для Android:
Шаг 1: Основной код активности
Шаг 2: метод SetWindowFlag
источник
Используйте
android:fitsSystemWindows="false"
в вашем топ-макетеисточник
Вот расширение в kotlin, которое делает свое дело:
источник
Используя этот код в своем XML, вы сможете увидеть временную шкалу в вашей деятельности:
источник
Есть три шага:
1) Просто используйте этот сегмент кода в свой метод @OnCreate
если вы работаете с фрагментом, вы должны поместить этот сегмент кода в метод @OnCreate своей деятельности.
2) Обязательно установите прозрачность в /res/values-v21/styles.xml:
Или вы можете установить прозрачность программно:
3) В любом случае вы должны добавить сегмент кода в styles.xml
ПРИМЕЧАНИЕ. Этот метод работает только с API 21 и выше.
источник
Вы также можете просмотреть мой пример с анимированным аватаром и анимированным текстом.
CollapsingAvatarToolbarSample
Читайте мой пост на Medium
Итак, позвольте мне объяснить, как это работает. Я создал собственный вид, реализованный AppBarLayout.OnOffsetChangedListener . Внутри HeadCollapsing Custom View я основал текст и изображение в AppBarLayout.
источник
Вы можете попробовать это.
источник
Хотя все ответы, приведенные выше, распространяются вокруг одной и той же фундаментальной идеи, вы можете заставить ее работать с простыми макетами, используя один из приведенных выше примеров. Однако я хотел изменить цвет фона, используя скользящую навигацию по фрагментам в полноэкранном режиме (кроме панели вкладок) и поддерживая регулярную навигацию, вкладки и панели действий.
Внимательно прочитав статью Антона Хадуцкого, я лучше понял, что происходит.
У меня есть
DrawerLayout
сConstraintLayout
(т.е. контейнер), который имеетToolbar
, включают в себя для основного фрагмента иBottomNavigationView
.Установка
DrawerLayout
имеяfitsSystemWindows
истина не является достаточным, вам необходимо установить какDrawerLayout
иConstraintLayout
. Предполагая прозрачную строку состояния, цвет строки состояния теперь совпадает с цветом фонаConstraintLayout
.Тем не менее, включенный фрагмент все еще имеет вставку строки состояния, поэтому анимация другого «полноэкранного» фрагмента поверх элемента не меняет цвет строки состояния.
Немного кода из упомянутой статьи в
Activity
«sonCreate
:И все хорошо, за исключением того, что теперь
Toolbar
не учитывается высота строки состояния. Еще несколько со ссылкой на статью, и у нас есть полностью рабочее решение:Main_activity.xml (обратите внимание, что поле marginTop
Toolbar
для предварительного просмотра будет заменено кодом):источник
Я нашел, что возиться с styles.xml и действием слишком громоздко, поэтому создал общий метод утилит, который имеет следующие параметры
Ява
Котлин DSL
И это все, что нужно для достижения прозрачной строки состояния. Надеюсь это поможет.
источник
android:fitsSystemWindows="true"
работают только на v21. Мы можем установить его в теме XML или в родительском макете, какLinearLayout
или вCoordinateLayout
. Для ниже v21, мы не могли добавить этот флаг. Пожалуйста, создайте другую папку значений с другимstyle.xml
файлом в соответствии с вашими потребностями.источник
Это сработало для меня:
источник
Все, что нужно, это пойти в
MainActivity.java
источник
в моем случае, поскольку у меня есть нижняя панель инструментов, у меня возникла проблема при тестировании предыдущих решений, кнопки системы Android покрыты моим нижним меню, которое я хочу добавить в упражнение:
источник
Вы можете использовать этот код ниже.
Включите этот макет в ваш основной макет.
toolbar.xml
Примечание: вы можете заменить SDP и SSP на dp и sp соответственно.
источник
в моем случае я вообще не вызываю «onCreate» (это собственное приложение реагировать, и это можно исправить также с помощью компонента ActB-Status StatusBar), можно также использовать это:
источник
Это должно работать
// В Activity, например, onCreate ()
источник
Я нашел ответ во время исследования этой библиотеки: https://github.com/laobie/StatusBarUtil
поэтому вам нужно добавить следующие коды в вашу деятельность
источник
добавьте эти строки в свою активность перед setContentView ()
добавьте эти 2 строки в ваш AppTheme
и последнее, что ваш minSdkVersion должен б 19
источник
Не
windowLightStatusBar
используйте вместо этогоstatusBarColor = @android:color/transparent
источник
Это только для уровня API> = 21. Это работает для меня. Вот мой код (Kotlin)
источник