我想为ActionBar
中显示的菜单项设置自定义背景。我发现我可以通过将以下项添加到我的应用主题样式定义中来实现:
<item name="android:actionBarItemBackground">@drawable/actionbar_button</item>
actionbar_button.xml
包含的位置:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/action_btn_on" android:state_pressed="true" />
<item android:drawable="@drawable/action_btn_off" />
</selector>
但是,这会导致背景图像也显示在ActionBar左侧显示的自定义应用徽标后面。在尝试找出只包含按钮的选择器之后,我想出了这个:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/action_btn_on" android:state_pressed="true" android:state_enabled="true" />
<item android:drawable="@drawable/action_btn_off" android:state_pressed="false" android:state_enabled="true"/>
<item android:drawable="@android:color/transparent"/>
</selector>
哪种方式有效,并且在应用程序加载完全后,徽标背后的背景是透明的,因为我想要它。但问题是,当它仍在加载时,它会短暂地显示带有按钮背景的徽标,更令人讨厌的是,它缩放并裁剪徽标以适应9补丁图形的填充区域内是按钮背景。完成加载后,背景将被切换,但缩放和裁剪仍然存在,这看起来非常难看。我该如何解决?
答案 0 :(得分:1)
没有为ActionBar按钮设置基于图像的背景的一般问题找到可行的解决方案,但如果我使用输入的基于XML的背景,例如使用layer-list
创建的{{1}},则不会进行缩放/裁剪形状。对于某些情况可能不太可行,但在我的情况下,它完全有可能,甚至可能比使用基于位图的资源更好。