2016-02-10 14 views
6

Ich benutze den Code, um die Höhe von Text und Zeilenhöhe in der Navigationsansicht anpassen und es funktioniert auf api21 +, aber der gleiche Code funktioniert nicht in api 16. Wie kann ich es funktionieren lassen ?benutzerdefinierte Menüelementgröße und Textsize in der Navigationsansicht

Code:

einen Stil erstellen und es auf NavigationView mit 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> 

Und dann gelten diese Art zu NavigationView App: Thema

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


</android.support.design.widget.NavigationView> 
+0

Hinweis auf andere implementiert: diese Frage hier beantwortet wurde http://stackoverflow.com/ Fragen/35453698/listprefereditemheightsmall-is-not-working-on-api-16 – CKP78

Antwort

7

In Code können Sie Verwenden Sie diesen Code, um die Textansicht anzupassen. versuche das und lass es mich wissen.

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); 
      } 

     } 
    }); 
+0

Wie kann ich Textgröße und Abstand zwischen zwei Menüpunkten in der Navigationsansicht ändern? – jason

+0

@jason Sie bekommen Textansicht jetzt können Sie setTextsize und setpadding Methode darauf aufrufen. – androidnoobdev

0

Ihre res/Werte Verzeichnisse überprüfen, können Sie ein res/Werte-v16-Verzeichnis finden, die einen anderen Stil

+0

I havae vlaues, Werte-w820dp und Werte-v21. Soll ich etwas entfernen? – jason

Verwandte Themen