2016-02-10 4 views
6

Я использую код для настройки высоты текста и высоты строки в режиме навигации, и он работает на api21 +, но тот же код не работает в api 16. Как я могу заставить его работать ?размер настраиваемого меню и текст в навигационном представлении

Код:

Создать стиль и применить его к NavigationView используя 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> 

И затем, применить этот стиль NavigationView используя приложение: Тема

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


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

Примечание к другим: этот вопрос был дан ответ здесь http://stackoverflow.com/ Вопросы/35453698/listpreferreditemheightsmall-is-not-working-on-api-16 – CKP78

ответ

7

В коде вы можете используйте этот код, чтобы настроить просмотр текста. попробуйте это и дайте мне знать.

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

Как изменить размер текста и расстояние между двумя пунктами меню в режиме навигации? – jason

+0

@jason вы получаете текстовое представление, теперь вы можете вызвать метод setTextsize и setpadding. – androidnoobdev

0

Проверьте разреш/значения каталогов, вы можете найти каталог Рез/ценности-V16, который реализует другой стиль

+0

I havae vlaues, values-w820dp и values-v21. Снять что-нибудь? – jason

 Смежные вопросы

  • Нет связанных вопросов^_^