在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>
答案 0 :(得分:5)
没有任何前缀引用同一文件上命名的样式。
@Style 引用您的 style.xml 项目文件。
@android:style 引用已定义的 Android API 样式。
有关Style Resource和Style 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是可选的。您可以直接按名称引用样式。这是多余的,因为无论如何你无法从其他任何风格中获得风格。