我正在对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>
结果你可以在这个截图中看到:
1)。如果actionBarIconColor
从未使用过,为什么颜色会发生变化?
2)。 actionBarIconColor, actionBarInsetStart, spinnerBarInsetStart, popupItemBackground
等属性的目的是什么?它们不是用来设置某些东西的样式,而是为什么Google工程师创建了这个属性?