是否可以仅使用 xml drawables创建类似 Holo 的 ActionBar 选项卡背景?如果是,如何?如果没有,有什么限制?
浏览 Android 源代码,我发现选项卡背景是使用tab_indicator_holo.xml中的可绘制选择器定义的:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Non focused states -->
<item android:state_focused="false" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/tab_unselected_holo" />
<item android:state_focused="false" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/tab_selected_holo" />
<!-- Focused states -->
<item android:state_focused="true" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/tab_unselected_focused_holo" />
<item android:state_focused="true" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/tab_selected_focused_holo" />
<!-- Pressed -->
<!-- Non focused states -->
<item android:state_focused="false" android:state_selected="false" android:state_pressed="true" android:drawable="@drawable/tab_unselected_pressed_holo" />
<item android:state_focused="false" android:state_selected="true" android:state_pressed="true" android:drawable="@drawable/tab_selected_pressed_holo" />
<!-- Focused states -->
<item android:state_focused="true" android:state_selected="false" android:state_pressed="true" android:drawable="@drawable/tab_unselected_pressed_holo" />
<item android:state_focused="true" android:state_selected="true" android:state_pressed="true" android:drawable="@drawable/tab_selected_pressed_holo" />
</selector>
然后为每个状态使用 9 个补丁可绘制对象,例如tab_selected_holo.9.png。
我想知道是否可以将这 9 个补丁可绘制对象替换为图层列表可绘制对象、形状可绘制对象或组合,从而节省创建各种 PNG 文件的需要(根据我的计算,每个密度 6 个)。
我注意到ActionBarSherlock还使用了 9 个补丁可绘制对象,因此很可能这是唯一的方法。