如何更改Action Bar的选项菜单项标题的字体?

时间:2016-06-23 07:03:00

标签: java android fonts

我试图更改菜单项的字体样式,所以我想设置MenuItems字体样式是“Century-Gothic”。

以下是我的代码

menu.xml文件

 <item
        android:id="@+id/option_menu_item_1"
        android:orderInCategory="1"`enter code here`
        android:title="option_menu_item_1"
        app:showAsAction="never" />

    <item
        android:id="@+id/option_menu_item_2"
        android:orderInCategory="2"
        android:title="option_menu_item_2"
        app:showAsAction="never" />

    <item
        android:id="@+id/option_menu_item_3"
        android:orderInCategory="3"
        android:title="option_menu_item_3"
        app:showAsAction="never" />
</menu>

MainActivity.java

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        try {
            ViewConfiguration config = ViewConfiguration.get(this);
            Field menuKeyField = ViewConfiguration.class
                    .getDeclaredField("sHasPermanentMenuKey");
            if (menuKeyField != null) {
                menuKeyField.setAccessible(true);
                menuKeyField.setBoolean(config, false);
            }
        } catch (Exception e) {     
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu, menu);
        return super.onCreateOptionsMenu(menu);

    }
}

color.xml

<resources>
    <color name="colorPrimary">#3F51B5</color>
    <color name="colorPrimaryDark">#303F9F</color>
    <color name="colorAccent">#FF00FF</color>
    <color name="skyBlue">#FF0000</color>
</resources>

styles.xml

<resources xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

        <item name="android:itemBackground">@color/skyBlue</item>
        <item name="android:textStyle">bold</item>
    </style>

</resources>

我得到如下图所示的输出

输出

enter image description here

但我想使用 gothic.ttf 资产文件字体将 MenuItem 标题字体更改为(Century-Gothic)。

1 个答案:

答案 0 :(得分:0)

styles.xml里面添加以下代码

<item name="android:actionMenuTextAppearance">@style/MyActionBar.MenuTextStyle</item>

所以styles.xml看起来像这样。

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

    <item name="android:itemBackground">@color/skyBlue</item>
    <item name="android:textStyle">bold</item>
   <item name="android:actionMenuTextAppearance">@style/MyActionBar.MenuTextStyle</item>
</style>

<style name="MyActionBar.MenuTextStyle" parent="Theme.AppCompat">
    <item name="actionMenuTextColor">@color/white</item>
   <item name="android:actionMenuTextColor">@color/white</item>

</style>

然后为MyActionBar.MenuTextStyle创建样式并根据需要更改TextView属性。

  

注意:您只能通过custom fonts使用Java code,而不能通过XML   布局styles/themes或{{1}}。

有关详细信息,请访问:Set specific font in a styles.xml