本文记录了修改 ActionBar 上 Menu 字体颜色的方法。第一种通过自定义主题实现,第二种通过复写onCreateOptionsMenu实现。
自定义Theme 修改MenuItem 文字颜色
自定义 ActionBar 上的菜单文字颜色需要通过 Activity 的 Theme 实现,而非 ActionBar 的 Theme。
-
- <style name="AppTheme" parent="AppBaseTheme">
- <item name="android:actionBarStyle">@style/CustomActionBar</item>
- <item name="android:actionMenuTextAppearance">@style/ActionBarTitle</item>
- <item name="android:actionMenuTextColor">@android:color/holo_blue_light</item>
- </style>
-
- <style name="ActionBarMenu" parent="@android:style/TextAppearance.Holo.Large">
- <item name="android:textColor">@android:color/holo_blue_light</item>
- <item name="android:textSize">20sp</item>
- </style>
复写onCreateOptionsMenu修改 MenuItem 文字颜色
- /**
- * 修改 ActionBar 上的菜单字体颜色
- */
- public static void setMenuItemTextColorToWhite(final Activity activity){
- activity.getLayoutInflater().setFactory(new Factory() {
-
- @Override
- public View onCreateView(String name, Context context,
- AttributeSet attrs) {
- if (name.equalsIgnoreCase("com.android.internal.view.menu.IconMenuItemView")
- || name.equalsIgnoreCase("com.android.internal.view.menu.ActionMenuItemView")) {
- try {
- LayoutInflater f = activity.getLayoutInflater();
- final View view = f.createView(name, null, attrs);
- System.out.println((view instanceof TextView));
- if (view instanceof TextView) {
- ((TextView) view).setTextColor(Color.WHITE/*这里修改颜色*/);
- }
- return view;
- } catch (InflateException e) {
- e.printStackTrace();
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- }
- }
- return null;
- }
-
- });
- }