Jetpack Compose 状态栏颜色未在深色主题中更新

Ran*_*mar 5 android android-jetpack-compose

我想为深色主题和浅色主题设置不同的颜色。除了状态栏颜色之外,一切正常。

在深色主题中 -> 我的状态栏颜色未更新。

我的主题:

private val DarkColorPalette = darkColors(
    primary = Color.Black,
    primaryVariant = Color.Black,
    secondary = Color.LightGray
)

private val LightColorPalette = lightColors(
    primary = Purple500,
    primaryVariant = Purple700,
    secondary = Teal200
)
Run Code Online (Sandbox Code Playgroud)

我在深色主题中的输出:

在此输入图像描述

编辑:

我已经看到这个答案 - how to change statusbar color in jetpack compose?

他们建议使用图书馆。我不想使用任何第三方库。

编辑2:

我的清单文件

   <activity
        android:name=".ActivityTextStyles"
        android:exported="true"
        android:label="@string/app_name"
        android:theme="@style/Theme.ComposeText.NoActionBar" />
Run Code Online (Sandbox Code Playgroud)

Eaw*_*web 8

这是我在面对同样的问题时发现的,并决定更深入地寻找原因。

事实证明,我的 Compose 项目开箱即用地从res/values中的theme.xml文件读取状态栏颜色的值。该值是使用colorPrimaryVariant设置的。将该值更新为新颜色会更改状态栏的颜色。

总的来说,我建议将 theme.xml 和 Colors.xml 的值更新为您希望用于项目的自定义颜色。


Ran*_*mar 6

我可以使用 onCreate() 中的这一行代码设置状态栏颜色

  this.window.statusBarColor = ContextCompat.getColor(this,R.color.black)
Run Code Online (Sandbox Code Playgroud)

我的代码:

    override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContent {
      
            this.window.statusBarColor = ContextCompat.getColor(this,R.color.black)
            //your composables
         }
     }
Run Code Online (Sandbox Code Playgroud)