您可以选择基于平台版本的主题,如样式和主题开发指南中所述。在 res/values/styles.xml 中定义样式,如下所示:
<style name="ThemeSelector" parent="android:Theme.Light">
...
</style>
然后在 res/values-v11/ 文件夹中,选择你的主题(可能是 Holo,如果你很黑)
<style name="ThemeSelector" parent="android:Theme.Holo">
...
</style>
然后将图标添加到该样式。例如,这里是HoneycombGallery示例应用程序的 styles.xml 文件的一个片段。
<style name="AppTheme.Dark" parent="@android:style/Theme.Holo">
...
<item name="menuIconCamera">@drawable/ic_menu_camera_holo_dark</item>
<item name="menuIconToggle">@drawable/ic_menu_toggle_holo_dark</item>
<item name="menuIconShare">@drawable/ic_menu_share_holo_dark</item>
</style>
底部 3 个元素都是可绘制目录中的图标。对于每个特定分辨率的图标集,您仍然需要至少一个文件夹,但您可以将浅色和深色图标组合到同一个文件夹中,但您不必为每个平台版本设置不同的图标文件夹。此外,您需要将它们列为 values/attrs.xml 文件中的引用,如下所示:
<resources>
<declare-styleable name="AppTheme">
<attr name="listDragShadowBackground" format="reference" />
<attr name="menuIconCamera" format="reference" />
<attr name="menuIconToggle" format="reference" />
<attr name="menuIconShare" format="reference" />
</declare-styleable>
</resources>
此时,您将能够使用“?attr/NameOfYourDrawable”取消引用在布局 XML 中引用它们,如下所示:
<item android:id="@+id/menu_camera"
android:title="@string/camera"
android:icon="?attr/menuIconCamera"
android:showAsAction="ifRoom" />