デフォルトでは、項目が選択されている場合、Android はオプション メニューにオレンジ色を表示します。
クリック時に OptionsMenu に独自の色を設定するにはどうすればよいですか??
デフォルトでは、項目が選択されている場合、Android はオプション メニューにオレンジ色を表示します。
クリック時に OptionsMenu に独自の色を設定するにはどうすればよいですか??
フォルダーに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 の使用の詳細については、これを参照してください。
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);
}