如何解决Android Material 主题和样式的完整文档,即参考
我有两个具体的和几个更一般的问题,它们都与 Android 中材料主题化文档的可用性有关。 一般问题是具体问题的结果。
根据官方文档 [1]、[2]、[3]、[4] 和博客 [5]、[ 6],[7] 关于 Android Material Theming 应该采用以下主题值进行品牌推广
colorPrimary
colorPrimaryVariant
colorOnPrimary
colorSecondary
colorSecondaryVariant
colorOnSecondary
这些也是在使用向导创建新 Android 项目时预设的值。 根据 [2],应该使用 Material Color Tool 来选择颜色,检查各种预览中的颜色,并评估它们的可访问性,尤其是它们的易读性。 选择主要颜色和次要颜色后,该工具会自动为每种颜色推荐匹配的文本颜色以及较深和较浅的变体。
问题开始了,当一个人将选择的颜色导出到一个 android XML 文件时。 (链接位于工具的右上角)。 导出的值命名为
primaryColor
primaryLightColor
primaryDarkColor
secondaryColor
secondaryLightColor
secondaryDarkColor
primaryTextColor
secondaryTextColor
显然,主题期望的和颜色工具导出的属性的数量和名称不匹配。
此外,根据 [6] 和 [8] 主要和次要颜色(colorPrimary
,colorSecondary
)应该用作背景颜色(对于某些元素UI),前景元素(例如文本)印在它们上面(分别使用 colorOnPrimary
和 colorOnSecondary
)。
此外,[6] 告诉我们,次要颜色最好应该是主要颜色的明亮补色。
因此,我决定使用浅黄色,黑色文字非常清晰。
但是,我不得不发现 androidx.preference.PreferenceFragmentCompat
使用辅助颜色 (colorSecondary
) 作为偏好组标题的前景色,背景颜色为 colorBackground
,等于白色。
显然,白色背景上的亮黄色根本无法辨认。
这引出了我的前两个具体问题
- 问题 1: 材质颜色选择工具的颜色应该如何映射到主题属性上?
-
问题 2: 主要和次要颜色也用作表面背景上的文本颜色是否正确,或者这仅仅是
PreferenceFragmentCompat
用于字幕的样式中的错误?
这次令人惊讶的经历让我提出了更一般的问题。
根据官方文档和我的理解,视图,特别是小部件受样式控制,例如TextAppearance.MaterialComponents.Caption
表示用作标题的 TextView
。
这些样式不会为它们定义的属性分配特定值,而是引用充当占位符(例如 colorPrimary
)并由主题定义的“语义”值。
然后主题为这些语义值分配特定的值,可能使用另一个间接步骤,例如通过引用命名颜色。
为主题的语义命名值分配自定义值应该是采用 Theme.MaterialComponents.DayNight
之类的主题的主要锚点,而无需单独重新定义所有单独的样式。
然而,或多或少是偶然,我发现了 TextView
的样式,例如 TextAppearance.MaterialComponents.Caption
、TextAppearance.MaterialComponents.Body1
。
再次,或多或少偶然地,我发现了主题属性 colorSurface
、colorError
、colorBackground
。
它们列在博客 6 中。
这会导致以下一般性问题
-
问题 3: 是否有任何参考完整列出了材料设计库中已经定义的所有样式并解释了
- 他们的目的是什么
- 它们应该在哪些上下文中应用于视图(又名小部件)
- 样式支持
View
的哪个子类(即编辑字段、单选按钮等) - 风格使用主题的哪些语义属性用于哪个部分
-
问题 4: 是否有任何参考完整列出材料设计库定义的所有语义值并解释
- 他们的类型(即颜色、字体大小、尺寸)
- 它们的预期用途(例如应该是浅色背景)
- 它们应该如何与其他语义值交互(例如,应该与颜色 xyz 形成对比,至少应该比尺寸 xyz 的两倍大)
我正在考虑一个类似于 API 典型参考的参考。 我不是在寻找第 1000 篇博客文章,它再次概括了上面的基本属性。 我已经看过https://material.io/了,但是好像没有这个东西。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。