Я хочу изменить цвет строки состояния для своего приложения, чтобы он был белым с черными значками (вместо черного по умолчанию с белыми значками). Есть ли способ сделать это?
Я хочу изменить цвет строки состояния для своего приложения, чтобы он был белым с черными значками (вместо черного по умолчанию с белыми значками). Есть ли способ сделать это?
Ответы:
С Android M (уровень API 23) вы можете добиться этого из темы с android:windowLightStatusBar
атрибутом.
Редактировать :
Как упоминал Pdroid, это также можно сделать программно:
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
Можно сделать белую строку состояния с серыми значками, например, таким образом для SDK> = 23 (см. Документацию ):
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:windowLightStatusBar">true</item>
</style>
в вашем файле styles.xml и установите colorPrimary
белый цвет или программно:
getWindow().setStatusBarColor(Color.WHITE);
SDK >= 23
но @being_sohelkhan по какой-то причине отредактировал мой исходный ответ ... stackoverflow.com/posts/46897243/revisions
Только что добавил в мои действия на Котлине:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
window.decorView.systemUiVisibility =View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
window.statusBarColor = Color.WHITE
}
просто добавьте это к своему стилю
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>
установите android: windowDrawsSystemBarBackgrounds в значение true * . Это флаг, описание которого приведено ниже:
Флаг, указывающий, отвечает ли это Окно за отрисовку фона для системных полос. Если задано значение true и окно не плавающее, системные панели отображаются с прозрачным фоном, а соответствующие области в этом окне заполняются цветами, указанными в {@link android.R.attr # statusBarColor} и {@link android.R .attr # navigationBarColor}. Соответствует {@link android.view.WindowManager.LayoutParams # FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS}.
Вы можете использовать это так в Котлине
window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
Не забудьте позвонить onCreate()
передsetContentView()
Нет такого способа сделать это, если у вас нет контроля над всем ромом, чтобы настроить его вручную. Я предлагаю вам использовать светло-серый цвет для цвета строки состояния в вашей теме, как это делает Google Диск.
Изменить: обратитесь к ответу @Wrekcker, поскольку это изменилось в android M.
Я просто использовал это
parent="Theme.AppCompat.Light.NoActionBar"
app:theme="@style/AppThemeWithoutActionBarwithwhitehed"
android:background="#fff"
Я была такая же проблема.
Я заметил, что когда я использую обычный макет, такой как RelativeLayout, он не работает. Но когда я переключился на эту библиотеку поддержки, такую как CordinatorLayout, она наконец начала работать. Попробуй это.
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context=".Activities.Activity">
<android.support.v7.widget.Toolbar
android:id="@+id/tb_activity"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.CoordinatorLayout>
<********* НИЖЕ ДРУГИХ АТРИБУТОВ ************>
стили
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="AppTheme.NoActionBar" parent="AppTheme">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
И в манифесте
<activity
android:name=".Activities.MyActivity"
android:label="Activity"
android:theme="@style/AppTheme.NoActionBar">
</activity>