gpt4 book ai didi

android - 在 android 中使用 DayNight 主题的状态栏的颜色

转载 作者:行者123 更新时间:2023-12-03 15:21:20 25 4
gpt4 key购买 nike

我正在将主题 Theme.AppCompat.DayNight.NoActionBar 应用于我的应用程序。
在浅色主题中,我希望状态栏为白色,而在深色主题中,我希望状态栏为黑色。

我不能让状态栏变成白色,字母变成黑色,反之亦然。

这是我的风格:

 <style name="AppTheme.Base" parent="Theme.AppCompat.DayNight.NoActionBar">
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primary_dark</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="colorControlNormal">@color/primary_dark</item>
<item name="colorControlHighlight">@color/primary_dark</item>
<item name="android:textColorPrimary">@color/letter_medium_emphasis</item>
<item name="android:textColorSecondary">@color/letter_high_emphasis</item>
</style>

这是我的颜色文件:
<resources>
<color name="primary">#ffffff</color>
<color name="primary_dark">#0336ff</color>
<color name="letter_high_emphasis">#de000000</color>
<color name="letter_medium_emphasis">#99000000</color>
<color name="letter_medium_disabled">#61000000</color>
</resources>

我试过添加参数@color/primary
但我仍然得到同样的东西,状态栏是白色的,同样来自状态栏的文本也是白色的。

在浅色主题中显示带有深色字母的白色状态栏以及在深色主题中反之的方式是什么?

提前致谢。

最佳答案

您可以使用 isLightTheme属性:
https://developer.android.com/reference/android/R.attr#isLightTheme
像这样将它添加到你的 themes.xml 中:

<item name="android:windowLightStatusBar">?attr/isLightTheme</item>
?attr/isLightTheme 返回的值由系统处理。您还可以通过以下方式获取当前设置的值:
AppCompatDelegate.getDefaultNightMode();
Configuration config = getResources().getConfiguration();
int nightMode = configuration.uiMode & Configuration.UI_MODE_NIGHT_MASK;
连同 android:statusBarColor您可以自动控制浅色和深色主题的状态栏。
此外,我使用 parent="Theme.MaterialComponents.DayNight" 的运气要好得多。使用此 attr 值时用于我的基本主题。

关于android - 在 android 中使用 DayNight 主题的状态栏的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60818890/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com