安卓在浅色主题中使用深色主题颜色

我正在使用Theme.Material.Components.DayNight主题在我的应用中实现暗模式。 问题是我的黑暗模式将纯粹与黑暗成分混合在一起,而我的“亮”模式将与黑暗与明亮成分混合在一起。因此,当应用程序默认模式设置为浅色时,我需要以某种方式访问​​深色主题属性。你能帮我解决我的问题吗?

我当时正在考虑设置自定义主题“ DarkThemeInLight”,并将其分配给应该为暗的视图,但这是一个好方法吗?如果我直接在该主题定义中设置颜色,则将重复使用colors.xml中几乎一半的代码(晚上)。

我正在考虑的方法:

     <style name="Apptheme" parent="Theme.MaterialComponents.DayNight">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorSecondary">@color/colorSecondary</item>
        <item name="android:colorBackground">@color/colorBackground</item>
        <item name="colorSurface">@color/colorSurface</item>
        <item name="colorError">@color/colorOnError</item>
        <item name="colorOnPrimary">@color/colorOnPrimary</item>
        <item name="colorOnSecondary">@color/colorOnSecondary</item>
        <item name="colorOnBackground">@color/colorOnBackground</item>
        <item name="colorOnSurface">@color/colorOnSurface</item>
        <item name="colorOnError">@color/colorOnError</item>
        <item name="windowactionBar">false</item>
        <item name="windowNoTitle">true</item>
        <item name="drawerArrowStyle">@style/DrawerIcon</item>
        <item name="textAppearanceSubtitle1">@style/TextAppearance.MyTheme.Subtitle1</item>
        <item name="textAppearanceSubtitle2">@style/TextAppearance.MyTheme.Subtitle2</item>
        <item name="textAppearanceCaption">@style/TextAppearance.MyTheme.Caption</item>
        <item name="android:colorControlactivated">@color/colorPrimary</item>
    </style>

    <style name="DarkThemeInLight" parent="Apptheme">
        <item name="android:colorBackground">@night/colorsBackground</item> (Can i call night folder somehow?)
        or
        <item name="android:colorBackground">#121212</item> (Value from night colors folder)
        ...
    </style>
fc3svsae86 回答:安卓在浅色主题中使用深色主题颜色

我认为要解决此问题,您需要执行以下步骤:

  1. values-night中创建main/res/目录。
  2. colors.xml复制main/res/values/文件并粘贴到values-night内。
  3. main/res/values-night/colors.xml中的颜色值更改为深色。(不要更改名称,只需更改值)
  4. 使用应用样式中的颜色。
  5. 转到mainActivity中的onCreate方法,并使用以下代码更改主题:

AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);

AppCompatDelegate.MODE_NIGHT_YES用于黑暗模式,AppCompatDelegate.MODE_NIGHT_NO用于白天模式。

本文链接:https://www.f2er.com/3075562.html

大家都在问