Android如何设置顶部状态栏颜色(主题)

版权声明:本文为DmrfCoder原创作品,如有转载请注明出处 https://blog.csdn.net/qq_36982160/article/details/82350993

在Android中我们经常需要设置屏幕顶部状态栏的主题和应用页面保持同一风格,本文介绍几种常用的设置方案:

状态栏将显示为纯净的颜色,没有渐变效果

/** 
 * 状态栏相关工具类 
 * 
 */  
public class StatusBarUtils {  

    //设置Activity对应的顶部状态栏的颜色
    public static void setWindowStatusBarColor(Activity activity, int colorResId) {  
        try {  
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {  
                Window window = activity.getWindow();  
                window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);  
                window.setStatusBarColor(activity.getResources().getColor(colorResId));  
            }  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  

     //设置Dialog对应的顶部状态栏的颜色
    public static void setWindowStatusBarColor(Dialog dialog, int colorResId) {  
        try {  
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {  
                Window window = dialog.getWindow();  
                window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);  
                window.setStatusBarColor(dialog.getContext().getResources().getColor(colorResId));  
            }  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  
}  

通过style来设置应用顶部状态栏的颜色

首先给出一张图:

这里写图片描述

通过上图,我们可以通过设置不同的属性来达到控制不同位置颜色的目的,下面给出使用示例,修改res/values-19里面的内容:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@android:color/holo_blue_bright</item>
<item name="colorPrimaryDark">@android:color/holo_blue_bright</item>
</style>

主要是设置 colorPrimary,colorPrimaryDark这两个属性的值来设置状态栏的颜色,需要注意的是:

1:AndroidManifest.xml文件中的targetSdkVersion必须设置在21以上。

2.parent主题必须是Theme.AppCompat开头,兼容包下的主题,所以必须一用v7包。

在顶部标题栏设置属性值达到风格一致的目的

首先修改res/values-v19文件夹下的styles.xml文件内容如下(如果没有可以新建一个):

 <style name="AppTheme" parent="@style/BaseAppTheme">
 <item name="android:windowTranslucentStatus">true</item>
 </style>

然后设置顶部标题控件的两个属性:

 android:background="@android:color/holo_blue_bright"
 android:fitsSystemWindows="true"

这时状态栏会保持与设置fitsSystemWindow属性的控件的背景颜色一致。

参考

Android状态栏颜色修改

猜你喜欢

转载自blog.csdn.net/qq_36982160/article/details/82350993
今日推荐