ActionBarSherlock mirrod属性 - 当使用“机器人:”前缀?(ActionBa

2019-10-17 13:09发布

当造型ActionBarSherlock我在想,当我必须使用前缀属性,当非前缀属性,当两个。 例如:

<item name="actionBarStyle">@style/Widget.Styled.ActionBar</item>
<item name="android:actionBarStyle">@style/Widget.Styled.ActionBar</item>

我发现这个解释ActionBarSherlock网站 :

镜像的属性

由于Android的主题化系统限制任何主题的自定义必须在两个属性来声明。 正常Android的前缀属性应用主题到本机操作栏和前缀的属性是自定义实现。 由于这两个主题化的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.可有人请提供有关这些镜像的属性一些更多的细节?

Answer 1:

从我了解你引用ActionBarSherlock文档,Android的前缀属性(你本来设置,如果你使用了“正常”的动作条唯一的一个),当ActionBarSherlock使用动作条的原生版本使用(也就是说,运行Android 3+,在何处使用),以及非前缀版设备上的旧版本时,当ActionBarSherlock实际上已经使用自己的执行动作条组件。

总之,Android的前缀属性是由Android原生功能使用,并且不带前缀的版本由自定义组件使用。

无论如何,它看起来像你总是有一个主题化对象ActionBarSherlock时同时设置前缀和不带前缀的属性。



Answer 2:

简单的规则就是任何地方,你是从继承parent="Widget.Sherlock.etc"那么你应该有双重属性。

唯一的例外是直接的样式,比如TextButton不要因为你只有经过自己的风格到TextView / Button直接,我会永远不过从在abs__styles.xml定义的父/电流风格继承,这样,你总是会得到正确的间距等。



文章来源: ActionBarSherlock mirrod attributes — when to use “android:” prefix?