我看到一些样式属性需要
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:windowActionBar
和android:windowNoTitle
答案 0 :(得分:3)
基于SDK版本,Android样式分组在不同的名称空间中。要覆盖主题,您必须遵循它的命名空间。
这就是你在扩展android:
主题时不需要AppCompat
前缀的原因,但是如果你想要别的东西,让我们说Theme.Holo
- 你有两种不同的风格对于他们 - 一个用于前Lollipop设备,一个用于-21
,后者在每个样式属性之前都有android:
前缀。
答案 1 :(得分:0)
这取决于您使用的主题以及它所使用的上下文。这些属性由不同的来源定义。
如果属性名称以android:
为前缀,则它是一个框架属性,只能用于定义它的Android版本。
如果该属性根本没有前缀,则属性由您自己的应用程序定义。这包括您使用库提取的所有属性定义。
在您的示例中,您为AppCompat
定义了一个主题,该主题是支持库的一部分,因此也是您的应用程序的一部分。框架小部件不会直接识别这些颜色。