【发布时间】:2021-01-05 18:28:42
【问题描述】:
我对这个话题有些疑惑。
我只使用了 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>
然后当我进入一个活动/片段时:
-
我检查用户设置的首选主题是什么,例如看到的主题是 Theme.Blue
-
所以对于这个主题,我想加载一些绿色的文本和其他红色的文本,所以我的想法是以编程方式设置主题。
TextView.setAppareance(Theme style)这似乎是一项非常艰巨的工作。
同样的情况也适用于与相同颜色的较高和较低色调等形成对比的背景。
我是否必须继承任何主题,将其设置在 xml 的顶部或将其 1 逐 1 设置为每个视图或我不知道的任何内容?
-
那么我该怎么做呢,推荐的方法是什么?
-
我不完全了解 colorPrimary、colorPrimaryVariant 和这些东西的去向。例如,在创建警报对话框时,按钮设置为绿色!
关于管理当前用户偏好主题不是问题,问题在于将其应用于所有视图的样式。
【问题讨论】:
标签: android android-view android-theme android-styles