根据黑暗模式进行更改

时间:2020-05-23 16:49:24

标签: android android-studio

如何使MainActivity.xml中的可绘制对象和对象更改颜色,取决于是否启用了暗模式?我在colors.xml中有这个文件:

<resources>
<color name="colorPrimary">#141414</color>
<color name="colorPrimaryDark">#000000</color>
<color name="colorAccent">#C923FE</color>
<color name="textColor">#9719BF</color>


<color name="colorPrimary2">#81CDC9</color>
<color name="colorPrimaryDark2">#A8F8F3</color>
<color name="colorAccent2">#3C3C3C</color>
<color name="textColor2">#6E6E6E</color>

我希望第二组颜色设置为亮模式,而第一组颜色设置为暗模式。我的styles.xml包含以下内容:

<style name="AppThemeDark" parent="Theme.AppCompat.DayNight.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:statusBarColor">@color/colorPrimary</item>
    <item name="android:textColorHint">@color/textColor</item>
</style>


<style name="AppThemeLight" parent="Theme.AppCompat.DayNight.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary2</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark2</item>
    <item name="colorAccent">@color/colorAccent2</item>
    <item name="android:statusBarColor">@color/colorPrimary2</item>
    <item name="android:textColorHint">@color/textColor2</item>
</style>

如果MainActivity中的可绘制对象和组件使用诸如此类的颜色访问它们的颜色

android:textColor="@color/colorAccent"

然后,如果打开/关闭黑暗模式,我是否有办法更改应用程序的面板?我所看过的所有教程中都缺少我要对MainActivity.xml组件和可绘制对象进行特殊处理的东西,以便它们可以以不同的方式访问颜色吗?谢谢:)

2 个答案:

答案 0 :(得分:0)

不需要重复颜色和可绘制对象。只需创建-night文件夹,如 drawable-night values-night 等。

然后放置相同名称的相同文件(colors.xml /可绘制文件)。

示例:

values / colors.xml

<color name="colorDefaultText">#757575</color>

values-night / colors.xml

<color name="colorDefaultText">#FFFFFF</color>

答案 1 :(得分:0)

请记住,Dark Mode 不是 Night Mode。他们是完全不同的。 DM 是在 Android 10 中引入的,它强制使用内置的黑白颜色,而 NM 在早期版本中使用默认/定义的样式,具体取决于您的实现。如果您希望您的应用使用您定义的亮/夜样式而不依赖于内置的暗样式,您可能需要在 themes.xml 或 style.xml 中将 forceDarkAllowed 设为 false,因为 DM 可能会发生冲突。