Size of custom menu item and text in navigation view

I use code to adjust text height and line height in navigation mode, and it works on api21 +, but the same code does not work in api 16. How can I make it work?

the code:

Create a style and apply it to NavigationView using app:theme

 <style name="NavigationViewStyle"> <item name="android:textSize">20sp</item> <!-- menu item text size--> <item name="android:listPreferredItemHeightSmall">40dp</item><!-- menu item height--> </style> 

And then apply this style to NavigationView using the application: theme

 <android.support.design.widget.NavigationView ... ... app:theme="@style/NavigationViewStyle" ... ... </android.support.design.widget.NavigationView> 
+6
android navigationview
source share
2 answers

In code, you can use this code to customize the text view. try this and let me know.

 private final ArrayList<View> mMenuItems = new ArrayList<>(); final Menu navMenu = navigationView.getMenu(); // Install an OnGlobalLayoutListener and wait for the NavigationMenu to fully initialize navigationView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { // Remember to remove the installed OnGlobalLayoutListener navigationView.getViewTreeObserver().removeOnGlobalLayoutListener(this); // Loop through and find each MenuItem View for (int i = 0; i < navMenu.size(); i++) { final String id = "nav_menuItem" + (i); final MenuItem item = navMenu.findItem(getResources().getIdentifier(id, "id", getPackageName())); navigationView.findViewsWithText(mMenuItems, item.getTitle(), View.FIND_VIEWS_WITH_TEXT); } // Loop through each MenuItem View and apply your custom Typeface for (final View menuItem : mMenuItems) { ((TextView) menuItem).setTypeface(fontLight, Typeface.NORMAL); } } }); 
+7
source share

Check the res / values ​​directories, you can find the res / values-v16 directory which implements a different style

0
source share

All Articles