Android风格 - @ style,android:,@ android:style等之间的区别

时间:2016-03-29 20:49:36

标签: android android-styles

在android开发者示例,博客等中,我看到了样式属性值的多个前缀。有人可以描述何时使用什么?例如,这三种情况有什么区别?

parent="@android:style/TextAppearance"
parent="TextAppearance.AppCompat"
parent="@style/TextAppearance.AppCompat"

这两种情况有什么区别?

<item name="colorControlNormal">@color/white</item>
<item name="android:colorControlNormal">@color/white</item>

2 个答案:

答案 0 :(得分:5)

没有任何前缀引用同一文件上命名的样式。

@Style 引用您的 style.xml 项目文件。

@android:style 引用已定义的 Android API 样式。

有关Style ResourceStyle and Themes的更多信息。

关于colorControlNormal vs android:colorControlNormal 是相同的解释。如果您使用 controlColorNormal ,您将在应用程序中定义应用于正常状态的框架控件的颜色。如果你使用 android:colorControlNormal ,你将覆盖系统应用于框架控件的颜色默认值。

答案 1 :(得分:3)

您可以将@视为发出命名资源的信号。

@type/name标识类型type的资源(字符串,颜色,布局,样式等),应用程序中定义的名称为name即将出现。

@+id/name标识名为name的id资源,如果它尚不存在将被创建(而@id只是指已经存在的id)。

@android:type/name表示指定资源是Android平台的一部分(它在应用程序中定义 - 它由设备提供)。

对于样式父母,@ style是可选的。您可以直接按名称引用样式。这是多余的,因为无论如何你无法从其他任何风格中获得风格。