Android stylable属性理解:actionBarIconColor,actionBarInsetStart等

时间:2015-07-21 08:24:36

标签: android android-styles

我正在对Google I/O Android App进行代码审核 所以,我在attrs.xml

中找到了这段代码
<declare-styleable name="BaseTheme">
    <attr name="actionBarIconColor" format="color" />
    <attr name="actionBarInsetStart" format="dimension" />
    <attr name="spinnerBarInsetStart" format="dimension" />
    <attr name="popupItemBackground" format="reference" />
    <attr name="photoItemForeground" format="reference" />
    <attr name="photoItemForegroundBorderless" format="reference" />

</declare-styleable>

链接: https://github.com/google/iosched/blob/master/android/src/main/res/values/attrs.xml#L18-L25

及其在styles.xml中的延续:

    <style name="Theme.IOSched.Base" parent="Theme">
        <item name="actionBarIconColor">#fff</item>
        <item name="actionBarInsetStart">@dimen/keyline_2</item>
        <item name="homeAsUpIndicator">@drawable/ic_up</item>
        <item name="spinnerBarInsetStart">@dimen/keyline_2_minus_16dp</item>
        <item name="popupItemBackground">?android:selectableItemBackground</item>
        <item name="photoItemForeground">?android:selectableItemBackground</item>
        <item name="photoItemForegroundBorderless">?android:selectableItemBackground</item>

    ....
    </style>

链接: https://github.com/google/iosched/blob/master/android/src/main/res/values/styles.xml#L32-L38

我尝试使用此属性 Intellij IDEA 中的Alt + F7),但仅在生成的代码中使用。此外,这是 not usage 字面意思。这只是编译一个文件中的所有资源或生成R.java类中的常量。所以实际上它是一样的。查看此生成的 actionBarIconColor属性代码:

public static final int actionBarIconColor=0x7f010022;
...
public static final int BaseTheme_actionBarIconColor = 0;

这是我能找到的所有用法。

当然你可以说,这是过度使用的参考你会是对的。
但仅仅是为了实验,我试图改变

<item name="actionBarIconColor">#fff</item>

<item name="actionBarIconColor">#f00</item>

结果你可以在这个截图中看到:
enter image description here

我的问题:

1)。如果actionBarIconColor从未使用过,为什么颜色会发生变化? 2)。 actionBarIconColor, actionBarInsetStart, spinnerBarInsetStart, popupItemBackground等属性的目的是什么?它们不是用来设置某些东西的样式,而是为什么Google工程师创建了这个属性?

0 个答案:

没有答案