Android ActionBar样式问题

时间:2013-05-15 16:32:10

标签: android android-actionbar

我想为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补丁图形的填充区域内是按钮背景。完成加载后,背景将被切换,但缩放和裁剪仍然存在,这看起来非常难看。我该如何解决?

1 个答案:

答案 0 :(得分:1)

没有为ActionBar按钮设置基于图像的背景的一般问题找到可行的解决方案,但如果我使用输入的基于XML的背景,例如使用layer-list创建的{{1}},则不会进行缩放/裁剪形状。对于某些情况可能不太可行,但在我的情况下,它完全有可能,甚至可能比使用基于位图的资源更好。