【问题标题】:Why is everything purple when I use Theme.MaterialComponents? [closed]为什么我使用 Theme.MaterialComponents 时一切都是紫色的? [关闭]
【发布时间】:2021-05-26 23:48:39
【问题描述】:

在进入styles.xml 并执行以下操作后,状态栏、应用栏图标和警告对话框的正负按钮都从默认颜色变为紫色:

<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
    <item name="shapeAppearanceMediumComponent">@style/AppShapeAppearance.MediumComponent</item>
</style>

我以前有Theme.AppCompat,但我没有这个紫色问题。如何将紫色从 AppCompat 改回默认颜色?

【问题讨论】:

  • 这是一个有点奇怪的问题。没有“默认”颜色,颜色由主题决定,所以您要查找的颜色是来自AppCompat 的颜色。紫色是材质主题选择的“默认”,它不是“问题”。
  • 那么,AppCompat 主题的颜色是什么?我之前没有包含像 &lt;item name="android:colorPrimary"&gt;@color/colorPrimary&lt;/item&gt; 这样的东西,所以我不完全确定颜色是什么。
  • 这方面有很多资源,这个问题是第一个搜索结果,似乎回答得很好:stackoverflow.com/questions/26583780/…
  • @HenryTwist 这仍然没有解决我应该如何处理这些颜色以及如何恢复原始主题。
  • “我必须使用材质主题 TextInputLayout 否则应用程序崩溃”这是 100% 错误的,问题是由其他原因引起的。

标签: android android-theme material-components-android


【解决方案1】:

这里是材料网站https://material.io/develop/android/theming/color的链接

在“使用颜色主题系统”下 您将作为项目添加到主题的这六个值决定了调色板,如果您在右侧看到默认颜色,如果您查看数字,您会看到它们是紫色的。 AppCompat 使用标准 3 colorPrimary、colorPrimaryDark、colorAccent。其中 2 个在 MaterialComponents 中没有使用。

为了让您开始将这些添加到您的主题中

<item name="colorPrimary">#5C9EAD</item>
<item name="colorPrimaryVarient">#326273</item>
<item name="colorOnPrimary">#FFFFFF</item>
<item name="colorSecondary">#E39774</item>
<item name="colorSecondaryVariant">#E39774</item>
<item name="colorOnSecondary">#EEEEEE</item>

【讨论】:

  • 不应该是color 而不是item 并放在colors.xml 文件中吗?
  • 不,样式使用 item 标记,就像您问题中的示例一样。但是,将它们也声明为颜色资源可能是一种好习惯。
  • 是的,当然使用 color.xml,我认为这可能太深入了,因为你不知道颜色为什么会改变。(字面上没有冒犯,只是看起来超出了范围)你甚至可以更进一步,并提供参考以允许交换颜色,从而可以轻松添加多个主题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-28
  • 2021-12-29
  • 2010-11-02
  • 2020-07-23
  • 2021-07-18
相关资源
最近更新 更多