主题中声明的颜色强调未被材料组件使用。

6
我的主题是MaterialComponents主题。我已经更改了颜色,但是材料组件(MaterialButton、InputLayout、EditText)没有使用我的强调色(它们使用一些蓝色,而我声明的强调色是Teal)。问题出在哪里?最好的方法是如何处理Material Components的主题?
    <style name="AppTheme" parent="Theme.MaterialComponents">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

编辑:更改主题为Theme.MaterialComponents.Bridge并不能解决该问题。


你的 @color/colorPrimary@color/colorPrimaryDark 是蓝色吗? - Jeel Vankhede
使用 MaterialComponents 应该使用 MaterialButton、MaterialXxx 而不是 Button、Xxx,对吗? - Samuel Eminet
抱歉,我表达不够清晰。 我的颜色强调是青色。 我正在使用 Material 组件:Material 按钮。 - OMIsie11
5个回答

4
也许你应该尝试使用colorSecondary而不是colorAccent:
 <style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar">
    <!-- Original AppCompat attributes. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorSecondary">@color/colorAccent</item>
</style>

这对我有效


2
在我的情况下,问题是针对特定API声明了另一个styles.xml。我在其中犯了一个错误,当进行测试时,其他的values-v21/styles.xml被应用在styles.xml之前。
长话短说,检查是否存在其他变量中的错误。我声明了那个变量错误。

1

对于那些尝试使用继承自Theme.MaterialComponents.*的主题的人,请记住不要使用普通的Button类,而是使用com.google.android.material.button.MaterialButton

而不是:

<Button
  (...)
  style="@style/Widget.MaterialComponents.Button" />

请使用以下内容:

确保使用:

<com.google.android.material.button.MaterialButton
  (...)
  style="@style/Widget.MaterialComponents.Button" />

曾经有过这样的经历,没有什么好羞耻的。 :)

0

将您的应用主题从 Theme.AppCompat 继承,如下所示:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    ...
</style>

请注意,您可以选择深色或浅色主题,但需要扩展Theme.AppCompat

您的意思是我应该使用那个主题并声明缺失的属性吗? 因为那个主题并不具备Material Components的全部属性。 - OMIsie11
是的,所有的材料组件都使用在您的应用程序主题中声明的颜色,但需要从Theme.AppCompat继承,因为Android会查找主题颜色,例如colorAccentcolorPrimary。但不要忘记在AndroidManifest中使用您声明的主题,例如:<application android:theme="@style/AppTheme"> - Sdghasemi
好的,我会尝试这种方法并反馈 :) - OMIsie11
如果您实际上正在使用 MaterialComponents,则此方法将不起作用。它们依赖于从 MaterialComponents 主题继承。 - Brill Pappin

0

它不起作用,我尝试了几个变体,包括桥接变体。 我认为我需要覆盖更多的属性。 - OMIsie11

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接