4

私はActionBarSherlockを使用しています。MenuItem があり、ActionBar の他のものではなく、その MenuItem のみでカスタム セレクターを使用したいと考えています。これはメニューコードです:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/menu_include_location"
        android:icon="@drawable/icon_place_selector"
        android:showAsAction="always"
        android:title="@string/menu_include_location"/>

    <item
        android:id="@+id/menu_send"
        android:icon="@drawable/ic_send"
        android:showAsAction="ifRoom|withText"
        android:title="@string/menu_send"/>

</menu>

ここに icon_place_selector.xml があります

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/location_place" android:state_pressed="false"/>
    <item android:drawable="@drawable/location_no_gradient" android:state_pressed="true"/>

</selector>

問題は、MenuItem では、アイコンがほんの一部であることです。表示されるもののスクリーンショットを次に示します。アイコンだけでなく、背景全体を変更する必要があります。それ、どうやったら出来るの?

ここに画像の説明を入力

4

3 に答える 3

4

コードでカスタム ActionView を設定することにより、特定のアクション バー項目のセレクターを変更できます。

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getSupportMenuInflater().inflate(R.menu.activity_main, menu);
    MenuItem menuItem = menu.findItem(R.id.menu_include_location);
    ImageView image = new ImageView(this);
    image.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
            LayoutParams.MATCH_PARENT));
    image.setPadding(16, 0, 16, 0);
    image.setImageResource(R.drawable.ic_launcher);
    image.setBackgroundResource(R.drawable.icon_place_selector);
    image.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            // ...
        }
    });
    menuItem.setActionView(image);
    return true;
}

すべてのアクション バー アイテムのセレクターを変更する場合は、次のスタイルを適用します。

<style name="AppTheme" parent="@style/Theme.Sherlock">
    <item name="android:selectableItemBackground">@drawable/icon_place_selector</item>
    <item name="android:actionBarItemBackground">@drawable/icon_place_selector</item>
</style>
于 2012-11-30T21:04:12.203 に答える
1

android:selectableItemBackgroundまず、ホロスタイルを設定すると、ウィジェット全体、つまりボタンにその背景セレクターが表示されることを知っておく必要があります。

アクションバー メニュー項目のアイコン セレクターの背景を変更する必要がある場合は、簡単な答えを次に示します。

android:actionBarItemBackgroundホロスタイルにセットするだけ!

<style name="AppTheme.Dark" parent="android:Theme.Holo">
    <item name="android:actionBarItemBackground">@drawable/item_background_holo_light</item>
</style>

役に立てば幸いです:-)

于 2014-02-20T14:58:47.847 に答える