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

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

于 2012-10-31T10:42:23.113 に答える