ActionBarSherlock中的ItemBackground

时间:2012-10-08 07:36:18

标签: android android-actionbar actionbarsherlock

我想定制ActionBarSherlock。所以,我尝试使用带透明背景的ActionButton选择器。这是选择器代码:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
            android:state_pressed="true"
            android:drawable="@drawable/nav_bouton_recherche_pushed"/>
    <item
            android:drawable="@drawable/nav_bouton_recherche"/>
</selector>

这是菜单代码:

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
            android:id="@+id/selection_menu_search"
            android:icon="@drawable/search_button_selector"
            android:title="@string/action_bar_search"
            android:showAsAction="always"
            />
</menu>

当我按下任何动作按钮时,其背景变为蓝色。 我试图将默认背景更改为透明。这是我的风格:

<style name="Theme.MyStyle" parent="Theme.Sherlock.Light">
     <item name="actionBarStyle">@style/Widget.MyStyle.ActionBar</item>
     <item name="android:actionBarStyle">@style/Widget.MyStyle.ActionBar</item>
     <item name="android:actionBarItemBackground">@android:color/transparent</item>
</style>

我遇到了以下问题:如果我在应用程序启动后立即按下操作按钮,那么它工作正常!但是后来,如果我按下溢出按钮,那么当按下它时,动作按钮将停止改变可绘制。

有人知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

在XML文件中只有属性android:icon,它允许你使用图标,而不是选择器,并且应该在代码中创建此菜单。 覆盖onCreateOptionsMenu,在其中创建所需的菜单。

@Override
public boolean onCreateOptionsMenu(Menu menu)
{
    SubMenu subMenu = menu.addSubMenu("one");
    subMenu.add("one_one");
    MenuItem item = subMenu.getItem();
    item.setIcon(R.drawable.test_selector);
    item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
    return super.onCreateOptionsMenu(menu);
}

test.selector:

<?xml version="1.0" encoding="utf-8"?>

<item
    android:drawable="@drawable/test_shape_pressed"
    android:state_pressed="true"/>
<item
    android:drawable="@drawable/test_shape"
    android:state_pressed="false"/>