1

我想自定义 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>

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

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

4

1 回答 1

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);
}

测试选择器:

<?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"/>

于 2012-10-31T10:42:23.113 回答