本文记录了修改 ActionBar 上 Menu 字体颜色的方法。第一种通过自定义主题实现,第二种通过复写onCreateOptionsMenu实现。
自定义Theme 修改MenuItem 文字颜色
自定义 ActionBar 上的菜单文字颜色需要通过 Activity 的 Theme 实现,而非 ActionBar 的 Theme。
<!-- 在 themes.xml 中定义如下主题,并将 AppTheme 应用到 application 中 -->
<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() {@Overridepublic 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;}});}