6

I am using the code to customize height of text and row height in navigation view and it works on api21+ but the same code is not working in api 16. How can I make it work ?

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 app:theme

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


</android.support.design.widget.NavigationView>
jason
  • 3,932
  • 11
  • 52
  • 123
  • Note to others: this question has been answered here http://stackoverflow.com/questions/35453698/listpreferreditemheightsmall-is-not-working-on-api-16 – CKP78 Aug 27 '16 at 08:44

2 Answers2

7

In code you can use this code to customize 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);
            }

        }
    });
Wasim K. Memon
  • 5,979
  • 4
  • 40
  • 55
0

Check your res/values directories, you may find a res/values-v16 directory that implements a different style

Mina Wissa
  • 10,923
  • 13
  • 90
  • 158