给Activity 设置 theme 可以设置状态栏的背景颜色
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setTheme(R.style.AppTheme_personal); }
<style name="AppTheme_personal" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> <item name="android:windowTranslucentStatus">false</item> </style>
但是只能改变背景颜色,适合全局的设置 在BaseActivity 中。
如果设置白色的 api 23以上可以设置亮色
<style name="AppTheme_white_personal" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorPrimary">@color/white</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> <item name="android:windowTranslucentStatus">false</item> </style>
在Activity 内也可以设置,不过要注意版本 ,发现 在高版本情况下 在代码中设置状态栏颜色 会加深一些,低版本没有问题
StatusBarUtil 一个开源的状态栏颜色手动设置的类