使用Material组件主题时,colorAccent或colorSecondary是什么?

12

使用Android Studio向导创建新的应用程序时,会使用派生自Theme.MaterialComponents.Light.DarkActionBar的主题,并设置colorAccent。另一方面,官方文档使用colorSecondary,并且完全没有提到colorAccent。这两者是否可以互换?应该选择哪一个?


我的情况下没有Theme.MaterialComponents主题。 - Abderazak Amiar
可能是因为我在设置向导中勾选了使用androidx。在我的情况下,这是Android Studio为新应用程序设置的默认主题。 - medihack
1
好的,我再次检查了一下...它似乎是com.google.android.material:material包的一部分,请参见https://material.io/develop/android/docs/getting-started/,而且我似乎在某个时候手动添加了它。 - medihack
3个回答

11
Theme.MaterialComponents 使用 colorSecondary,如material指南官方文档中所述。库中定义的所有组件都使用此属性。
然而,在库中还有Bridge themes,它们继承自AppCompat主题,并且如果您无法将您的主题继承自Material Components主题,则可以使用它们。这些主题从AppCompat主题继承,为您定义新的Material Components主题属性。
您可以在库中检查桥接主题
<style name="Base.V14.Theme.MaterialComponents.Light" parent="Base.V14.Theme.MaterialComponents.Light.Bridge">

  <!-- Colors -->
  <item name="colorAccent">?attr/colorSecondary</item>
在这里,你可以找到这些主题中colorSecondarycolorAccent之间的映射关系。

5

是的,我确实相信colorSecondarycolorAccent的新术语,并且它们是可以互换的,因为如果您阅读文档,特别是关于次要颜色的定义,它说:

次要颜色提供了更多强调和区分产品的方式。拥有次要颜色是可选的,并且应该只小量地应用于突出显示您的UI的部分。

我猜仅从这个陈述中就很清楚它们两者具有相同的作用。


1
根据Material Design文档,Android Studio中的primary color和secondary color实际上是primaryColor和accentColor。但如果需要更多变化,则可以使用secondaryColor。因此,在Android Studio中,建议使用accentColor标签来定义来自Material Design文档的secondary color。您可以尝试一些Material调色板,如https://www.materialpalette.com,以了解其行为。

3
不确定这是否正确。随着我阅读更多相关内容,似乎 accentColor 是用于 AppCompat 主题,而 secondaryColor 则是用于 MaterialComponents 主题,例如请参见此处。但是这真的很令人困惑。 - medihack
经过审查所有文章后,看起来colorSecondary是应该与Material设计一起使用的东西。如果只使用AppCompat主题,我会使用accentColor。 - Niladree

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