在 Android 中的任何布局中使用 colors.xml
Using colors.xml in any Layout in Android
我在 res/value
中有一个 colors.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#3F51B5</color>
<color name="colorPrimaryDark">#303F9F</color>
<color name="colorAccent">#FF4081</color>
<color name="indicator_unselected">#4D000000</color>
<!--Indigo 500-->
<color name="primary_500">#3F51B5</color>
<!--Indigo 700-->
<color name="primary_700">#303F9F</color>
<!--Pink 500-->
<color name="accent_500">#E91E63</color>
<!--Pink 700-->
<color name="accent_700">#C2185B</color>
<color name="black_trans80">#33000000</color>
<color name="blue_grey">#455A64</color>
<color name="red">#F44336</color>
<color name="pink">#E91E63</color>
<color name="purple">#9C27B0</color>
<color name="deep_purple">#673AB7</color>
<color name="indigo">#3F51B5</color>
<color name="blue">#2196F3</color>
<color name="light_blue">#03A9F4</color>
<color name="cyan">#00BCD4</color>
<color name="teal">#009688</color>
<color name="green">#4CAF50</color>
<color name="light_green">#8BC34A</color>
<color name="lime">#CDDC39</color>
<color name="yellow">#FFEB3B</color>
<color name="amber">#FFC107</color>
<color name="orange">#FF9800</color>
<color name="deep_orange">#FF5722</color>
<color name="brown">#795548</color>
<color name="grey">#E0E0E0</color>
<color name="white_70">#B3FFFFFF</color>
<color name="cyan_50">#E0F7FA</color>
<color name="amber_50">#FFF8E1</color>
<color name="purple_50">#F3E5F5</color>
</resources>
当我想在布局中使用这些颜色中的任何一种时,让我们采用 listview.xml
(包含列表视图的布局)。
我里面有一个LinearLayout和一个ListView。
所以,如果我想改变 LinearLayout 的背景颜色,我必须这样做:
android:background="@color/cyan"
这行得通。我的问题是:我的文件名为 colors.xml 而不是 color.xml
为什么我仍然可以使用@color 访问这些自定义颜色?为什么@colors 给我一个错误?
文件名不重要,重要的是标签。您可以用您的名字创建一个文件,并可以在其中放置颜色。但要确保它们在 <color>
标签中。我们通常遵循此约定,将我们的颜色保存在 colors.xml 中,即使您可以将颜色保存在 palette.xml.
中
<color name=</color> // This tag matter and actually define resources
// It doesn't matter what is a file name
在您的情况下,您是通过名称(青色)访问颜色资源。我们从不指定它驻留在哪个文件中。
<color name="cyan">#00BCD4</color>
XML 标签的名称在 values
文件夹下很重要。
<color name="cyan">#00BCD4</color>
这里的标签名称是color
。所以你可以使用 @color/
.
访问它
我在 res/value
中有一个colors.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#3F51B5</color>
<color name="colorPrimaryDark">#303F9F</color>
<color name="colorAccent">#FF4081</color>
<color name="indicator_unselected">#4D000000</color>
<!--Indigo 500-->
<color name="primary_500">#3F51B5</color>
<!--Indigo 700-->
<color name="primary_700">#303F9F</color>
<!--Pink 500-->
<color name="accent_500">#E91E63</color>
<!--Pink 700-->
<color name="accent_700">#C2185B</color>
<color name="black_trans80">#33000000</color>
<color name="blue_grey">#455A64</color>
<color name="red">#F44336</color>
<color name="pink">#E91E63</color>
<color name="purple">#9C27B0</color>
<color name="deep_purple">#673AB7</color>
<color name="indigo">#3F51B5</color>
<color name="blue">#2196F3</color>
<color name="light_blue">#03A9F4</color>
<color name="cyan">#00BCD4</color>
<color name="teal">#009688</color>
<color name="green">#4CAF50</color>
<color name="light_green">#8BC34A</color>
<color name="lime">#CDDC39</color>
<color name="yellow">#FFEB3B</color>
<color name="amber">#FFC107</color>
<color name="orange">#FF9800</color>
<color name="deep_orange">#FF5722</color>
<color name="brown">#795548</color>
<color name="grey">#E0E0E0</color>
<color name="white_70">#B3FFFFFF</color>
<color name="cyan_50">#E0F7FA</color>
<color name="amber_50">#FFF8E1</color>
<color name="purple_50">#F3E5F5</color>
</resources>
当我想在布局中使用这些颜色中的任何一种时,让我们采用 listview.xml
(包含列表视图的布局)。
我里面有一个LinearLayout和一个ListView。 所以,如果我想改变 LinearLayout 的背景颜色,我必须这样做:
android:background="@color/cyan"
这行得通。我的问题是:我的文件名为 colors.xml 而不是 color.xml 为什么我仍然可以使用@color 访问这些自定义颜色?为什么@colors 给我一个错误?
文件名不重要,重要的是标签。您可以用您的名字创建一个文件,并可以在其中放置颜色。但要确保它们在 <color>
标签中。我们通常遵循此约定,将我们的颜色保存在 colors.xml 中,即使您可以将颜色保存在 palette.xml.
<color name=</color> // This tag matter and actually define resources
// It doesn't matter what is a file name
在您的情况下,您是通过名称(青色)访问颜色资源。我们从不指定它驻留在哪个文件中。
<color name="cyan">#00BCD4</color>
XML 标签的名称在 values
文件夹下很重要。
<color name="cyan">#00BCD4</color>
这里的标签名称是color
。所以你可以使用 @color/
.