【问题标题】:colorPrimary or primaryColor?colorPrimary 还是primaryColor?
【发布时间】:2020-01-06 19:18:39
【问题描述】:

我在网络上到处都能看到colorPrimary 的使用,直到我偶然发现谷歌自己的Color Tool 使用:

-<resources>

<color name="primaryColor">#303f9f</color>

<color name="primaryLightColor">#666ad1</color>

<color name="primaryDarkColor">#001970</color>

<color name="secondaryColor">#fdd835</color>

<color name="secondaryLightColor">#ffff6b</color>

<color name="secondaryDarkColor">#c6a700</color>

<color name="primaryTextColor">#ffffff</color>

<color name="secondaryTextColor">#000000</color>

</resources>

一旦你导出你的选择。

那么正确的约定是什么?另外,它会影响小部件的 Material Components 颜色吗?

【问题讨论】:

  • 就我个人而言,我更喜欢将其作为标准约定colorPrimary, colorPrimaryDark, colorAccent,而且我看不出它会影响/冲突 Material Components 小部件颜色的任何原因。

标签: android colors material-design user-experience material-components


【解决方案1】:

1.如果您在res/values/colors.xml 中定义颜色,那么您可以自己使用任何名称,在Java/Kotlin 类中创建变量时也是如此。

  • primaryColor
  • colorPrimary
  • primary_color
  • color_primary

来自 Android 开发者的示例

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <color name="opaque_red">#f00</color>
   <color name="translucent_red">#80ff0000</color>
</resources>

2.如果您创建一个从Android样式/主题扩展的自定义样式/主题,那么您必须使用Android定义的名称。

// colors.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="primaryColor">#008577</color>
    <color name="primary_dark_color">#00574B</color>
    <color name="color_accent">#D81B60</color>
</resources>

// styles.xml
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/primaryColor</item>
    <item name="colorPrimaryDark">@color/primary_dark_color</item>
    <item name="colorAccent">@color/color_accent</item>
</style>

如您所见,在styles.xml中,父主题中定义了colorPrimarycolorPrimaryDarkcolorAccent三个属性名,所以必须使用相同的名称,因为你想覆盖它。

colors.xml 中,您可以使用您认为在您的应用中有意义的任何名称。

回到你的问题:

那么正确的约定是什么?

在这种情况下没有标准约定,但从 Android 开发人员那里,您只需为颜色命名,无需添加 color/Color 作为前缀或后缀。因为我们通常把app所有的颜色都放在res/values/colors.xml里面,每个item都在一个color tag里面。

它会影响小部件的材质组件颜色吗?

没有。

【讨论】:

  • 你的第二点是我不明白的。我从 MaterialComponents.DayNight 扩展而来,所以我必须使用相同的项目名称。然而,谷歌自己的工具使用了不同的名称。
  • @PIXP 从主题扩展时,您通常希望覆盖该主题中的某些属性,例如文本颜色、按钮大小、背景等,那么您必须使用相同的项目名称(即在该主题中定义)。如果您使用其他名称,它不会影响您的应用程序。 Google 并不总是正确。你可以看到这个链接。 developer.android.com/guide/topics/resources/…
【解决方案2】:

它们不一样,请查看 Themes versus Styles

【讨论】:

    猜你喜欢
    • 2021-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-13
    • 2015-12-12
    • 1970-01-01
    • 1970-01-01
    • 2020-05-12
    相关资源
    最近更新 更多