在设置 ActionBarSherlock 样式时,我想知道何时必须使用前缀属性,何时使用非前缀属性,以及何时使用两者。例如:
<item name="actionBarStyle">@style/Widget.Styled.ActionBar</item>
<item name="android:actionBarStyle">@style/Widget.Styled.ActionBar</item>
我在ActionBarSherlock 网站上找到了这个解释:
镜像属性
由于 Android 主题系统的限制,任何主题自定义都必须在两个属性中声明。普通的 android-prefixed 属性将主题应用于本机操作栏,unprefixed 属性用于自定义实现。由于两个主题 API 完全相同,您只需引用您的自定义两次,而不必实施两次。
准确传达这意味着什么的最简单方法是举个例子。以下是上述“样式化”示例的完整主题:
<style name="Theme.Styled" parent="Theme.Sherlock.Light.DarkActionBar">
<item name="actionBarStyle">@style/Widget.Styled.ActionBar</item>
<item name="android:actionBarStyle">@style/Widget.Styled.ActionBar</item>
</style>
<style name="Widget.Styled.ActionBar" parent="Widget.Sherlock.Light.ActionBar.Solid.Inverse">
<item name="background">@drawable/bg_striped</item>
<item name="android:background">@drawable/bg_striped</item>
<item name="backgroundSplit">@drawable/bg_striped_split</item>
<item name="android:backgroundSplit">@drawable/bg_striped_split</item>
</style>
我想,非前缀属性只能用于属性,在 API 级别 11 之前不存在。但是为什么示例android:background
中还有一个background
属性?android:background
自 API 级别 1 起就存在。有人可以提供有关这些镜像属性的更多详细信息吗?