最简单的办法是在AndroidManifest.xml 中给 <application> 或<activity> 设置theme:
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Light.NoActionBar默认是灰色背景,白色图标-->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimaryDark">#FFFFFF</item> <!--这一句控制状态栏背景颜色-->
<item name="android:windowLightStatusBar" tools:targetApi="m">false</item> <!-- 这一句控制图标颜色:true 图标黑色 ,false 图标白色-->
</style>
</resources>
也可以在代码中动态设置状态栏属性,下面是工具类:
package com.example.test
import android.annotation.TargetApi
import android.app.Activity
import android.content.Context
import android.graphics.Color
import android.os.Build
import android.view.View
import androidx.annotation.ColorInt
object StatusbarUtil {
* 获取状态栏高度
fun getStatusBarHeight(context: Context): Int {
val resourceId = context.resources.getIdentifier("status_bar_height", "dimen", "android")
if (resourceId > 0) {
return context.resources.getDimensionPixelSize(resourceId)
return 0
* 设置状态栏透明
fun setStatusBarTransparent(activity: Activity) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
activity.window.statusBarColor = Color.TRANSPARENT
* 设置状态栏背景颜色
fun setStatusBarBgColor(activity: Activity, @ColorInt color: Int) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
activity.window.statusBarColor = color
* 设置状态栏白色 和 图标黑色
fun lightMode(activity: Activity) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
activity.window.statusBarColor = Color.WHITE //白底
activity.window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR //黑字
* 设置状态栏颜色 和 图标颜色
* backgroundColor 背景颜色
* isIconBlack 图标+文本颜色 true 是黑色 false 白色
fun customColorMode(activity: Activity, backgroundColor: String, isIconBlack: Boolean) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
activity.window.statusBarColor = Color.parseColor(backgroundColor) //白底
if (isIconBlack) {
activity.window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR //黑色图标+文字
} else {
activity.window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_VISIBLE //白色图标+文字
* 设置状态栏透明 是否全屏 图标颜色
* isIconBlack true 黑色黑标+文字 false白色
* isFullScreen 是否是全屏 true全屏,可以实现沉浸式状态栏
fun transparentMode(activity: Activity, isIconBlack: Boolean, isFullScreen: Boolean = false) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
activity.window.statusBarColor = Color.TRANSPARENT
if (isIconBlack) {
if (isFullScreen) {
activity.window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN //黑色图标+文字 全屏
} else {
activity.window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR //黑色图标+文字
} else {
if (isFullScreen) {
activity.window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_VISIBLE or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN //白色图标+文字 全屏
} else {
activity.window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_VISIBLE
我整理的一些关于【XML】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://d.51cto.com/Hpqqk2Android NoActionBar 状态栏透明的实现
在Android开发中,用户界面的优雅和视觉效果常常是吸引用户的关键因素之一。随着Material Design的推广,越来越多的应...
导读:最近在使用自己手机,发现一种动画效果非常不错,就是天气随着时间季节,
状态栏和ToorBar
颜色都会发生改变,搜索资料得出的三种方案….方案一
将手机
状态栏透明化:
状态栏透明了,
状态栏的
颜色就会自动跟随下面的布局
两种方式:1.代码
方式
* 设置透明
状态栏
* 可在Activity的onCreat()中调用
<!-- 文字及图标
颜色:true为深色,false为浅色 -->
<item name="
android:
windowLightStatusBar">true</item>
<!-- 背景色 -->
<item name="
android:
statusBarColor">?
android:attr/colorPrimary</item>
android-statusbar-library
状态栏库,兼容5.0版本以下,不需要设置主题样式即可修改状态栏颜色,使用起来很方便
API说明:CoreStatusBar类,主要是用与修改状态栏颜色,获取状态栏和导航栏高度
public static void setStatusBarColor(Activity activity, int statusColor)
作用:设置状态栏颜色参数一:当前activity,参数二:状态栏颜色
public static void setStatusBarColor(Activity activity, int statusColor, int alpha)
作用:设置状态栏颜色参数一:当前activity,参数二:状态栏颜色(rgb),参数三:指定透明度(0-255)
public static int getStateHeight(Cont
get
Window().addFlags(
WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
//注意要清除 FLAG_TRANSLUCENT_STATUS flag
get
Window().clearFlags(
WindowManager.LayoutParams....
修改
颜色statusBar颜色可以在values的styles里面的
1.同过设置
<itemname="colorPrimaryDark">@color/color
StatusBar</item>
2.通过设置
<item name="
android:
statusBarColor">@color/colorAccent</item>...
```xml
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:statusBarColor">@color/colorPrimaryDark</item>
</style>
这里使用了 `colorPrimaryDark` 作为状态栏的颜色,你可以根据自己的需要修改。
2. 在 AndroidManifest.xml 文件中的 `<application>` 标签下添加 `android:theme` 属性:
```xml
<application
android:theme="@style/AppTheme"
</application>
这样就完成了状态栏颜色的设置。注意,这个方法只在 Android 5.0 及以上版本有效。在低版本中可以考虑使用第三方库来实现。