android – 导航视图中的自定义菜单项大小和文本大小

前端之家收集整理的这篇文章主要介绍了android – 导航视图中的自定义菜单项大小和文本大小前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在导航视图中使用代码自定义文本高度和行高,它适用于api21,但是相同的代码在api 16中不起作用.我怎样才能使它工作?

码:

创建一个样式并使用app:theme将其应用于NavigationView

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

然后,使用app:theme将此样式应用于NavigationView

  1. <android.support.design.widget.NavigationView
  2. ...
  3. ...
  4. app:theme="@style/NavigationViewStyle"
  5. ...
  6. ...
  7.  
  8.  
  9. </android.support.design.widget.NavigationView>

解决方法

代码中,您可以使用此代码自定义文本视图.试试看,让我知道.
  1. private final ArrayList<View> mMenuItems = new ArrayList<>();
  2. final Menu navMenu = navigationView.getMenu();
  3. // Install an OnGlobalLayoutListener and wait for the NavigationMenu to fully initialize
  4. navigationView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
  5. @Override
  6. public void onGlobalLayout() {
  7. // Remember to remove the installed OnGlobalLayoutListener
  8. navigationView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
  9. // Loop through and find each MenuItem View
  10. for (int i = 0; i < navMenu.size(); i++) {
  11. final String id = "nav_menuItem" + (i);
  12. final MenuItem item = navMenu.findItem(getResources().getIdentifier(id,"id",getPackageName()));
  13. navigationView.findViewsWithText(mMenuItems,item.getTitle(),View.FIND_VIEWS_WITH_TEXT);
  14. }
  15. // Loop through each MenuItem View and apply your custom Typeface
  16.  
  17. for (final View menuItem : mMenuItems) {
  18. ((TextView) menuItem).setTypeface(fontLight,Typeface.NORMAL);
  19. }
  20.  
  21. }
  22. });

猜你在找的Android相关文章