【问题标题】:custom menu item size and textsize in navigation view导航视图中的自定义菜单项大小和文本大小
【发布时间】:2016-02-10 10:58:36
【问题描述】:

我正在使用代码来自定义导航视图中的文本高度和行高,它适用于 api21+,但相同的代码在 api 16 中不起作用。我怎样才能使它起作用?

代码:

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

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

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

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


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

【问题讨论】:

标签: android navigationview


【解决方案1】:

在代码中,您可以使用此代码自定义文本视图。试试这个,让我知道。

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

        }
    });

【讨论】:

  • 如何更改导航视图中两个菜单项之间的文本大小和距离?
  • @jason 您现在正在获取文本视图,您可以在其上调用 setTextsize 和 setpadding 方法。
【解决方案2】:

检查你的 res/values 目录,你可能会发现一个实现不同风格的 res/values-v16 目录

【讨论】:

  • 我有 vlaues、values-w820dp 和 values-v21。我应该删除一些东西吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-27
  • 2015-09-11
  • 2022-01-23
相关资源
最近更新 更多