为什么以及何时需要将android:前缀添加到样式中?

时间:2016-12-20 09:59:33

标签: android styles android-theme

  

我看到一些样式属性需要android前缀,有些人不需要它。是什么原因。像

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

为什么我们没有使用android:windowActionBarandroid:windowNoTitle

2 个答案:

答案 0 :(得分:3)

基于SDK版本,Android样式分组在不同的名称空间中。要覆盖主题,您必须遵循它的命名空间。

这就是你在扩展android:主题时不需要AppCompat前缀的原因,但是如果你想要别的东西,让我们说Theme.Holo - 你有两种不同的风格对于他们 - 一个用于前Lollipop设备,一个用于-21,后者在每个样式属性之前都有android:前缀。

答案 1 :(得分:0)

这取决于您使用的主题以及它所使用的上下文。这些属性由不同的来源定义。

如果属性名称以android:为前缀,则它是一个框架属性,只能用于定义它的Android版本。

如果该属性根本没有前缀,则属性由您自己的应用程序定义。这包括您使用库提取的所有属性定义。

在您的示例中,您为AppCompat定义了一个主题,该主题是支持库的一部分,因此也是您的应用程序的一部分。框架小部件不会直接识别这些颜色。