返回
在 Android 中简化样式管理:从 strings.xml 引用 styles.xml 中的文本视图颜色
Android
2024-03-06 17:12:09
从 strings.xml 中引用 styles.xml 中的文本视图颜色
问题
在 Android 开发中,管理文本视图颜色既需要在 strings.xml 文件中定义颜色,又需要在 styles.xml 文件中定义颜色。这可能会变得冗余且难以维护。有没有一种方法可以从 strings.xml 文件引用 styles.xml 中的文本视图颜色?
解决方案
使用特殊语法
你可以使用特殊语法 ?attr/
,后跟 styles.xml 文件中定义的颜色属性的名称,从 strings.xml 文件引用 styles.xml 中的颜色。
例如,要引用在 styles.xml 文件中定义为 BadColour
的颜色,可以在 strings.xml 文件中使用以下语法:
<font color="?attr/BadColour">Text</font>
在 styles.xml 中定义颜色属性
要使引用有效,你需要在 styles.xml 文件中定义引用的颜色属性。例如,要定义 BadColour
颜色属性,可以添加以下行:
<style name="AppTheme" parent="android:Theme.Holo.NoActionBar">
<item name="BadColour">#ff0000</item>
</style>
示例
为了更清楚地说明,这里是一个完整的示例:
strings.xml
<string name="my_text"><font color="?attr/BadColour">Bad</font> Text</string>
styles.xml
<style name="AppTheme" parent="android:Theme.Holo.NoActionBar">
<item name="BadColour">#ff0000</item>
</style>
现在,my_text
字符串将部分显示为红色,使用从 styles.xml 中引用的 BadColour
值。
注意事项
- 确保在 styles.xml 文件中正确定义颜色属性。
- 引用时使用正确的颜色属性名称。
- 这种方法仅适用于文本视图颜色的子部分。对于整个文本视图的颜色,你应该在 styles.xml 文件中定义文本视图样式并将其应用于文本视图。
结论
通过使用 ?attr/
语法,你可以从 strings.xml 文件轻松引用 styles.xml 中的文本视图颜色,从而简化 Android 应用程序的样式管理。
常见问题解答
- 问:如何定义整个文本视图的颜色?
- 答: 在 styles.xml 文件中创建文本视图样式并将其应用于文本视图。
- 问:除了颜色,还可以引用其他属性吗?
- 答: 是的,你可以引用 styles.xml 中定义的任何属性。
- 问:如何确保 styles.xml 中定义的颜色属性与 strings.xml 中引用的颜色属性匹配?
- 答: 使用同一名称和数据类型定义颜色属性。
- 问:这种方法有哪些优点?
- 答: 它消除了重复,使样式管理更加集中。
- 问:这种方法有哪些缺点?
- 答: 它可能使 strings.xml 文件更难理解,因为颜色引用依赖于 styles.xml 文件。