我想更改应用程序状态栏的颜色,以使其为带有黑色图标的白色(而不是默认的带有白色图标的黑色)。有什么办法吗?
我想更改应用程序状态栏的颜色,以使其为带有黑色图标的白色(而不是默认的带有白色图标的黑色)。有什么办法吗?
Answers:
使用Android M(API级别23),您可以通过带有android:windowLightStatusBar
属性的主题来实现这一点。
编辑:
就像Pdroid提到的那样,这也可以通过编程实现:
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
可以将带有灰色图标的白色状态栏设为白色,例如,对于SDK> = 23(请参见docs):
<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
刚刚添加到我在Kotlin上的活动中:
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 *。这是一个标志,其描述如下:
指示此Window是否负责绘制系统栏背景的标志。如果为true且窗口未漂浮,则系统栏将以透明背景绘制,并且该窗口中的相应区域将填充{@link android.R.attr#statusBarColor}和{@link android.R中指定的颜色.attr#navigationBarColor}。对应于{@link android.view.WindowManager.LayoutParams#FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS}。
我遇到过同样的问题。
我注意到,当我使用像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>