How can I change the NavigationView's item text size? How can I change the NavigationView's item text size? android android

How can I change the NavigationView's item text size?


Create new style at the file app/src/main/res/values/styles.xml

<style name="NavigationDrawerStyle">        <item name="android:textSize">20sp</item><!-- text size in menu-->        <!-- item size in menu-->        <item name="android:listPreferredItemHeightSmall">40dp</item>        <item name="listPreferredItemHeightSmall">40dp</item>        <!-- item padding left in menu-->        <item name="android:listPreferredItemPaddingLeft">8dp</item>        <item name="listPreferredItemPaddingLeft">8dp</item>        <!-- item padding right in menu-->        <item name="android:listPreferredItemPaddingRight">8dp</item>        <item name="listPreferredItemPaddingRight">8dp</item>    </style>

Add it to your main_layout.xml

  <android.support.design.widget.NavigationView       ...        app:theme="@style/NavigationDrawerStyle"       ....>    </android.support.design.widget.NavigationView>

All params of the navigation items (which you can change) are located here (path to file ...\sdk\extras\android\support\design\res\layout\design_navigation_item.xml )

design_navigation_item.xml

<android.support.design.internal.NavigationMenuItemView    xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="?attr/listPreferredItemHeightSmall"    android:paddingLeft="?attr/listPreferredItemPaddingLeft"    android:paddingRight="?attr/listPreferredItemPaddingRight"    android:drawablePadding="@dimen/navigation_icon_padding"    android:gravity="center_vertical|start"    android:maxLines="1"    android:fontFamily="sans-serif-thin"    android:textSize="22sp"    android:textAppearance="?attr/textAppearanceListItem" />

Also you can override *.xml file (copy file from ...\sdk\extras\android\support\design\res\layout\design_navigation_item.xml), just in your app/src/main/res/layout folder create a layout named the same design_navigation_item.xml.

All layouts which can be Overriden are located here ...\sdk\extras\android\support\design\res\layout\

design_layout_snackbar.xmldesign_layout_snackbar_include.xmldesign_layout_tab_icon.xmldesign_layout_tab_text.xmldesign_navigation_item.xmldesign_navigation_item_header.xmldesign_navigation_item_separator.xmldesign_navigation_item_subheader.xmldesign_navigation_menu.xml

[UPDATE] Each version of com.android.support:design-{version} lib has different items to override. Check all what you need in

enter image description here

[UPDATE 04/14/2020]

If you are using com.google.android.material.navigation.NavigationViewthen open the class, and you will see:

public NavigationView(@NonNull Context context, @Nullable AttributeSet attrs) {    this(context, attrs, R.attr.navigationViewStyle);  }

So you can use attr navigationViewStyle to set your own style for the NavigationView via theme of your app:

NB: parent theme of AppTheme should be Theme.MaterialComponents

    <style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar.Bridge">   ...<item name="navigationViewStyle">@style/AppNavigationViewStyle</item>   ...    </style><style name="AppNavigationViewStyle" parent="Widget.MaterialComponents.NavigationView">        <item name="itemTextAppearance">@style/AppNavigationViewItemTextAppearance</item>   </style><style name="AppNavigationViewItemTextAppearance" parent="@style/TextAppearance.MaterialComponents.Subtitle2">         <item name="android:textSize">18sp</item>   </style>

Just open parent theme to see all <item name attrs for override


You can customize everything from text color to size and font in your style.xml

<style name="NavDrawerTextStyle" parent="Base.TextAppearance.AppCompat">    <item name="android:textColor">@color/colorPrimaryDark</item>    <item name="android:textSize">16sp</item>    <item name="android:textStyle">bold</item></style>

and then in your NavigationView:

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/drawer_layout"android:layout_width="match_parent"android:layout_height="match_parent"android:fitsSystemWindows="true"tools:openDrawer="start"><android.support.design.widget.NavigationView    ...    android:itemTextAppearance="@style/NavDrawerTextStyle"     />


Since Android Support Library 22.2.1, Google has changed default textSize of items in NavigationView from 16sp to 14sp, which suits Material Design guideline well. However, in some cases(for example, when you want to support Chinese language), it seems larger textSize is better. Solution is simple:

  1. add app:theme="@style/yourStyle.Drawer" to your NavigationView in your layout.xml
  2. in styles.xml, add android:textSize="16sp" in style yourStyle.Drawer