Android:更改子菜单父文本大小

时间:2015-10-23 19:53:18

标签: android menu size navigation-drawer

我的导航视图有这个菜单结构:

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

<group android:checkableBehavior="single">

    <item
        android:id="@+id/nav_clients"
        android:icon="@drawable/ic_group"
        android:title="@string/nav_clients"/>

    <item
        android:id="@+id/nav_products"
        android:icon="@drawable/ic_box"
        android:title="@string/nav_products" />

    <item
        android:id="@+id/nav_orders"
        android:icon="@drawable/ic_buy"
        android:title="@string/nav_orders" />

</group>

<item android:title="@string/nav_title_app">
    <menu>
        <item
            android:id="@+id/nav_settings"
            android:icon="@drawable/ic_settings_black"
            android:title="@string/nav_settings" />

        <item
            android:id="@+id/nav_sync"
            android:icon="@drawable/ic_sync_black"
            android:title="@string/nav_sync" />
    </menu>
</item>

我已经成功更改了菜单项文本大小,但只有包含菜单的项目没有改变大小? 有什么想法吗?

1 个答案:

答案 0 :(得分:3)

我没有找到任何正式的方式,既不是风格,也可以通过编程方式实现,请看下面。

private void setMenuHeadTitleSize(int itemId) {

    Menu menu = mNavigationView.getMenu();

    MenuItem menuItem = menu.findItem(itemId);

    MenuItem subMenuItem = menuItem.getSubMenu().getItem();
    String title = String.valueOf(subMenuItem.getTitle());

    SpannableString mNewTitle = new SpannableString(title);
    mNewTitle.setSpan(new RelativeSizeSpan(1.1f), 0, title.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    subMenuItem.setTitle(mNewTitle);
}

同时为您的SubMenu项目提供ID

<item android:id="@+id/nav_top"
    android:title="@string/nav_title_app">
    <menu>
        <item
            android:id="@+id/nav_settings"
            android:icon="@drawable/ic_settings_black"
            android:title="@string/nav_settings" />

        <item
            android:id="@+id/nav_sync"
            android:icon="@drawable/ic_sync_black"
            android:title="@string/nav_sync" />
    </menu>
</item>

最后,一旦NavigationView膨胀,并附上菜单,请调用上面的函数

setMenuHeadTitleSize(R.id.nav_top);