如何使用黑色图标使状态栏变为白色?

时间:2014-12-23 15:47:01

标签: android themes

我想更改我的应用状态栏的颜色,使其为黑色图标的白色(而不是带有白色图标的默认黑色)。有没有办法做到这一点?

10 个答案:

答案 0 :(得分:72)

使用Android M(api level 23),您可以使用android:windowLightStatusBar属性的主题实现此目的。

编辑:

正如Pdroid所提到的,这也可以以编程方式实现:

getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); 

答案 1 :(得分:23)

可以使用灰色图标制作白色状态栏,例如这种方式适用于SDK> = 23:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="android:windowLightStatusBar">true</item>
</style>
在styles.xml中

并将colorPrimary设置为white 或以编程方式设置:

getWindow().setStatusBarColor(Color.WHITE);

答案 2 :(得分:9)

刚刚添加到我在Kotlin的活动中:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                window.decorView.systemUiVisibility =View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
                window.statusBarColor = Color.WHITE
            }

答案 3 :(得分:7)

这对我有用

<style name="MyTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowLightStatusBar">true</item>
    <item name="android:statusBarColor">@android:color/white</item>
</style>

答案 4 :(得分:2)

只需将此添加到您的样式

const id = 'Something';

if(id){
  alert("This ID is ${id}");
} else {
  alert('No ID');
}

android:windowDrawsSystemBarBackgrounds 设置为 true * 。 这是一个标志,其描述如下:

标记,指示此窗口是否负责绘制系统栏的背景。如果为true且窗口未漂浮,则系统栏将以透明背景绘制,并且该窗口中的相应区域将填充{@link android.R.attr#statusBarColor}和{@link android.R中指定的颜色.attr#navigationBarColor}。对应于{@link android.view.WindowManager.LayoutParams#FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS}。

答案 5 :(得分:1)

除非你能控制整个rom手动定制,否则

没有这种方法。我建议你做的是,通过你的主题使用浅灰色的状态栏颜色,如谷歌驱动器。

编辑:请参阅@Wrekcker答案,因为这在Android M中已经改变。

答案 6 :(得分:1)

您可以在Kotlin中以这种方式使用它

 window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR

确保在onCreate()之前在setContentView()中调用它

答案 7 :(得分:0)

我刚用过这个

  1. 在样式中设置父项
parent="Theme.AppCompat.Light.NoActionBar"
  1. 将此添加到xml中的菜单栏中
  app:theme="@style/AppThemeWithoutActionBarwithwhitehed"       
  android:background="#fff"

答案 8 :(得分:-1)

我遇到了同样的问题。

我注意到当我使用像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>

&lt; *********低于其他属性************&gt;

样式

<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>

答案 9 :(得分:-1)

我使用:

  if (Build.VERSION.SDK_INT >= 19 && Build.VERSION.SDK_INT < 21) {
        setWindowFlag(this, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, true);
    }
    if (Build.VERSION.SDK_INT >= 19) {
        setWindowFlag(this, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, false);     }

    if (Build.VERSION.SDK_INT >= 21) {
        getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
        getWindow().setStatusBarColor(Color.WHITE);
    }



setContentView(R.layout.activity_mainss);

主题在 AndroidManifest 中设置:

 <style name="Theme.MapRiti" parent="Theme.AppCompat.DayNight.DarkActionBar">
    <!-- Primary brand color. -->
    <item name="colorPrimary">@color/purple_500</item>
    <item name="colorPrimaryDark">@color/orange</item>
    <item name="colorPrimaryVariant">@color/purple_700</item>
    <item name="colorSecondary">@color/teal_200</item>
    <item name="colorSecondaryVariant">@color/teal_700</item>
</style>