如何更改状态栏颜色以匹配棒棒糖中的应用程序?[Android]产品

Bri*_*ooe 96 android colors status android-5.0-lollipop

在新的棒棒糖更新中,我注意到,使用原生Google应用,状态栏的颜色会更改,以匹配您正在运行的应用上的操作栏.我看到它也在Twitter应用程序上,所以我猜测它不仅仅是Google可以做到的.

如果有可能,有谁知道如何做到这一点?

kli*_*mat 219

要更改状态栏颜色,请使用setStatusBarColor(int color).根据javadoc,我们还需要在窗口上设置一些标志.

工作代码片段:

Window window = activity.getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.setStatusBarColor(ContextCompat.getColor(activity, R.color.example_color));
Run Code Online (Sandbox Code Playgroud)


请记住,根据材料设计指南状态栏颜色和操作栏颜色应该不同:

  • ActionBar应使用主要500色
  • StatusBar应使用主700色

请看下面的截图:

在此输入图像描述

  • 请注意,效果可能不会显示在模拟器中.例如,[此示例项目](https://github.com/commonsguy/cw-omnibus/tree/master/MaterialDesign/StatusBarColor)在Nexus 9上显示状态栏,但在Android 5.0模拟器上没有. (4认同)
  • @Azad不,它不是.要使用上面的代码片段,您必须确保您的设备在API 21或更高版本上运行. (3认同)
  • 我想在棒棒糖前设备中显示颜色.怎么做到呢? (3认同)
  • 我正在开发一个相对简单的项目,我必须说我只是使用了 `getWindow().setStatusBarColor(activity.getResources().getColor(R.color.example_color));` 并且它工作得很好。不确定这些标志是绝对必要的上下文。 (2认同)

Gjo*_*nov 48

只需在styles.xml中添加它即可.colorPrimary用于操作栏,colorPrimaryDark用于状态栏.

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="android:colorPrimary">@color/primary</item>
    <item name="android:colorPrimaryDark">@color/primary_dark</item>
</style>
Run Code Online (Sandbox Code Playgroud)

这张来自开发者android的图片解释了有关彩色托盘的更多信息.您可以在此链接上阅读更多内容.

在此输入图像描述


小智 41

设置状态栏颜色的另一种方法是通过style.xml.

为此,请使用以下内容在res/values-v21文件夹下创建style.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="AppTheme" parent="android:Theme.Material">
        <!--   darker variant for the status bar and contextual app bars -->
        <item name="android:colorPrimaryDark">@color/blue_dark</item>
    </style>
</resources>
Run Code Online (Sandbox Code Playgroud)

编辑:正如评论中所指出的,当使用AppCompat时,代码是不同的.在文件res/values/style.xml中使用:

<style name="Theme.MyTheme" parent="Theme.AppCompat.Light">   
    <!-- Set AppCompat’s color theming attrs -->
    <item name="colorPrimary">@color/my_awesome_red</item>
    <item name="colorPrimaryDark">@color/my_awesome_darker_red</item>
    <!-- Other attributes -->
</style>
Run Code Online (Sandbox Code Playgroud)

  • @Martin对于appcompat,使用不带android前缀的colorPrimaryDark. (3认同)

Muh*_*Ali 22

要设置状态栏颜色,请在res/values-v21文件夹下使用以下内容创建style.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <style name="AppBaseTheme" parent="AppTheme">
        <item name="android:windowDrawsSystemBarBackgrounds">true</item>
        <item name="android:statusBarColor">@color/blue</item>
    </style>

</resources>
Run Code Online (Sandbox Code Playgroud)