0

デフォルトでは、項目が選択されている場合、Android はオプション メニューにオレンジ色を表示します。

ここに画像の説明を入力

クリック時に OptionsMenu に独自の色を設定するにはどうすればよいですか??

4

2 に答える 2

0

フォルダーにselector.xml呼び出されるxmlファイルを作成し、これを入力します..drawable

Button基本的に、ユーザーがクリックしたりフォーカスしたりするなどのイベントが発生したときに、何かをしたいことをAndroidに伝えています...

<?xml version="1.0" encoding="utf-8"?>
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_focused="true" android:drawable="@color/blue" /> <!-- focused -->
    <item android:state_focused="true" android:state_pressed="true" android:drawable="@color/blue" /> <!-- focused and pressed-->
    <item android:state_pressed="true" android:drawable="@color/green" /> <!-- pressed -->
    <item android:drawable="@color/white" /> <!-- default -->
 </selector>

次に、メニューで使用するアイテムのアイコンを次のように設定します

android:icon = "@drawable/selector"

StateListDrawable の使用の詳細については、これを参照してください。

于 2012-04-23T18:01:41.067 に答える
0

Android のオプション メニューをカスタマイズして、背景を設定したり、テキストの外観を変更したりできます。メニューの背景とテキストの色は、テーマとスタイルを使用して変更できませんでした。Android ソース コード (data\res\layout\icon_menu_item_layout.xml) は、メニュー レイアウトにクラス「com.android.internal.view.menu.IconMenuItem」View のカスタム アイテムを使用します。上記のクラスを変更して、メニューをカスタマイズできます。同じことを実現するには、LayoutInflater ファクトリ クラスを使用して、ビューの背景とテキストの色を設定します。

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.my_menu, menu);
    getLayoutInflater().setFactory(new Factory() {
        @Override
        public View onCreateView(String name, Context context, AttributeSet attrs) {
            if (name .equalsIgnoreCase(“com.android.internal.view.menu.IconMenuItemView”)) {
                try{
                    LayoutInflater f = getLayoutInflater();
                    final View view = f.createView(name, null, attrs);
                    new Handler().post(new Runnable() {
                        public void run() {
                            // set the background drawable
                            view.setBackgroundColor(any color);

                        }
                    });
                    return view;
                } catch (InflateException e) {
                    } catch (ClassNotFoundException e) {}
            }
            return null;
        }
    });
    return super.onCreateOptionsMenu(menu);
}
于 2012-04-23T17:45:53.643 に答える