0

我想为显示在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-patch 图形的填充区域。加载完成后,背景被关闭,但缩放和裁剪仍然存在,看起来很丑陋。我该如何解决?

4

1 回答 1

1

layer-list尚未找到将基于图像的背景设置为 ActionBar 按钮的一般问题的有效解决方案,但如果我使用输入的基于 XML 的背景(例如使用形状创建的背景),则不会发生缩放/裁剪。在某些情况下可能不可行,但在我的情况下,这是完全可能的,甚至可能比使用基于位图的资源更好。

于 2013-05-15T19:46:23.700 回答