Android中如何修改状态栏默认文字颜色(Jetpack Compose)
在Jetpack Compose中修改状态栏文字颜色(白色改黑色)
下面提供两种实用方法,帮你把状态栏的时间、Wi-Fi等文字/图标从白色改为黑色:
方法一:使用Compose官方的SystemUiController(推荐)
借助LocalSystemUiController可以直接在Composable中控制状态栏样式,需要依赖androidx.compose.ui:ui库。
代码示例
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalSystemUiController import androidx.compose.ui.graphics.Color @Composable fun MainScreen() { val systemUiController = LocalSystemUiController.current // 设置状态栏背景色(可选,示例为白色,搭配黑色文字更清晰) systemUiController.setStatusBarColor( color = Color.White, darkIcons = true // 核心参数:开启深色图标/文字,即黑色 ) Surface( modifier = Modifier.fillMaxSize(), color = MaterialTheme.colorScheme.background ) { // 这里写你的页面内容 } }
说明
darkIcons = true仅在Android 6.0(API 23)及以上版本生效,低于该版本的设备受系统限制,无法修改状态栏文字颜色,只能保持白色。
方法二:通过Activity的Window直接配置
如果需要在Activity层级统一设置,或者处理更低版本的兼容逻辑,可以用这种方式:
代码示例
import android.os.Build import androidx.activity.ComponentActivity import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.ui.platform.LocalContext @Composable fun SetupStatusBar() { val activity = LocalContext.current as ComponentActivity LaunchedEffect(Unit) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { // 开启状态栏深色图标/文字 activity.window.decorView.systemUiVisibility = activity.window.decorView.systemUiVisibility or android.view.View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR // 可选:设置状态栏背景为白色 activity.window.statusBarColor = android.graphics.Color.WHITE } else { // API 23以下无法修改文字颜色,建议设置深色状态栏背景,保留白色文字 activity.window.statusBarColor = android.graphics.Color.BLACK } } }
在你的主Composable中调用SetupStatusBar()即可生效。
额外提示
如果App支持深色模式,记得根据当前主题动态切换darkIcons的值:
- 浅色主题:
darkIcons = true(黑色文字) - 深色主题:
darkIcons = false(白色文字)
内容的提问来源于stack exchange,提问作者Tippu Fisal Sheriff
相关产品推荐
相关产品推荐

