如何在 Android 中设置不同的主题和最佳方式

问题描述

我对这个话题有些怀疑。

我只使用了 android 为我们提供的 API 的夜间/白天主题,而您为两者设置了主题。然后它适用于 setNightMode() 和类似的一切。 我当时所做的是在视图的背景中设置颜色,当设置为夜间主题时它会发生变化

所以我想知道例如我是否创建了 3 个这样的主题(浅色/深色/蓝色)(我不想重复代码,所以我将显示 1 个主题):

    <style name="Theme.Blue" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
        <!-- Primary brand color. -->
        <item name="colorPrimary">@color/green</item>
        <item name="colorPrimaryVariant">@color/greentwo</item>
        <item name="colorOnPrimary">@color/reed</item>
        <!-- Secondary brand color. -->
        <item name="colorSecondary">@color/teal_200</item>
        <item name="colorSecondaryVariant">@color/teal_700</item>
        <item name="colorOnSecondary">@color/black</item>
        <!-- Status bar color. -->
        <item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
        <!-- Customize your theme here. -->
    </style>

然后当我进入一个活动/片段时:

  1. 我检查用户设置的首选主题是什么,例如看到的主题是 Theme.Blue

  2. 所以对于这个主题,我想加载一些绿色的文本和一些红色的文本,所以我的想法是以编程方式设置主题。 TextView.setAppareance(Theme style) 看起来真的很辛苦。

同样的背景也有相同颜色的高低色调等的对比。

我是否必须继承任何主题,将其设置在 xml 的顶部还是将其 1 对 1 设置为每个视图或我不知道的任何内容?

  • 那么我该怎么做,推荐的方法是什么?

  • 我不太明白 colorPrimary、colorPrimaryVariant 和这些东西的去向。例如,在创建警报对话框时,按钮设置为绿色!

关于管理当前用户首选项主题不是问题,问题在于将其应用于所有视图的样式。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)