首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何更改导航视图的项目文本大小?

如何更改导航视图的项目文本大小?
EN

Stack Overflow用户
提问于 2015-07-03 10:17:43
回答 11查看 94.9K关注 0票数 72

Google 最近发布 android.support.design.widget.NavigationView小部件作为com.android.support:design:22.2.0库的一部分,大大简化了(和标准化)创建NavigationDrawer的过程。

然而,根据设计规范,列表项目应该是Roboto培养基,14 to,87% #000000NavigationView不公开任何textSizetextStyle来自定义此操作。

如果我对使用谷歌提供的NavigationView (或以任何其他方式定制)来维护正确的设计规范有什么选择呢?

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2015-07-18 12:59:05

自从Android 22.2.1以来,谷歌已经将NavigationView中条目的默认NavigationView从16 to更改为14 to,这很符合材料设计准则。但是,在某些情况下(例如,当您想支持中文时),更大的textSize似乎更好。解决办法很简单:

  1. app:theme="@style/yourStyle.Drawer"添加到layout.xml中的NavigationView
  2. 在styles.xml中,在样式yourStyle.Drawer中添加android:textSize="16sp"
票数 63
EN

Stack Overflow用户

发布于 2015-09-24 13:00:18

在文件app/src/main/res/values/styles.xml中创建新样式

代码语言:javascript
运行
复制
<style name="NavigationDrawerStyle">

        <item name="android:textSize">20sp</item><!-- text size in menu-->

        <!-- item size in menu-->
        <item name="android:listPreferredItemHeightSmall">40dp</item>
        <item name="listPreferredItemHeightSmall">40dp</item>

        <!-- item padding left in menu-->
        <item name="android:listPreferredItemPaddingLeft">8dp</item>
        <item name="listPreferredItemPaddingLeft">8dp</item>

        <!-- item padding right in menu-->
        <item name="android:listPreferredItemPaddingRight">8dp</item>
        <item name="listPreferredItemPaddingRight">8dp</item>
    </style>

将其添加到您的main_layout.xml

代码语言:javascript
运行
复制
  <android.support.design.widget.NavigationView
       ...
        app:theme="@style/NavigationDrawerStyle"
       ....>


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

导航项的所有参数(您可以更改)都位于这里( ...\sdk\extras\android\support\design\res\layout\design_navigation_item.xml文件的路径)

design_navigation_item.xml

代码语言:javascript
运行
复制
<android.support.design.internal.NavigationMenuItemView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="?attr/listPreferredItemHeightSmall"
    android:paddingLeft="?attr/listPreferredItemPaddingLeft"
    android:paddingRight="?attr/listPreferredItemPaddingRight"
    android:drawablePadding="@dimen/navigation_icon_padding"
    android:gravity="center_vertical|start"
    android:maxLines="1"
    android:fontFamily="sans-serif-thin"
    android:textSize="22sp"
    android:textAppearance="?attr/textAppearanceListItem" />

您还可以重写*.xml文件(从...\sdk\extras\android\support\design\res\layout\design_navigation_item.xml复制文件),只需在app/src/main/res/layout文件夹中创建一个名为“相同的design_navigation_item.xml”的布局。

所有可以覆盖的布局都位于这里...\sdk\extras\android\support\design\res\layout\

代码语言:javascript
运行
复制
design_layout_snackbar.xml
design_layout_snackbar_include.xml
design_layout_tab_icon.xml
design_layout_tab_text.xml
design_navigation_item.xml
design_navigation_item_header.xml
design_navigation_item_separator.xml
design_navigation_item_subheader.xml
design_navigation_menu.xml

更新每个版本的com.android.support:design-{version}库都有不同的项要覆盖。检查所有你需要的东西

更新04/14/2020

如果您使用的是com.google.android.material.navigation.NavigationView,那么打开类,您将看到:

代码语言:javascript
运行
复制
public NavigationView(@NonNull Context context, @Nullable AttributeSet attrs) {
    this(context, attrs, R.attr.navigationViewStyle);
  }

因此,您可以使用attr navigationViewStyle通过应用程序的主题为NavigationView设置自己的样式:

NB: AppTheme的父主题应该是 Theme.MaterialComponents

代码语言:javascript
运行
复制
    <style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar.Bridge">
   ...
<item name="navigationViewStyle">@style/AppNavigationViewStyle</item>
   ...
    </style>

<style name="AppNavigationViewStyle" parent="Widget.MaterialComponents.NavigationView">
        <item name="itemTextAppearance">@style/AppNavigationViewItemTextAppearance</item>
   </style>
<style name="AppNavigationViewItemTextAppearance" parent="@style/TextAppearance.MaterialComponents.Subtitle2">
         <item name="android:textSize">18sp</item>
   </style>

只需打开父主题,查看用于覆盖的所有<item name吸引符

票数 119
EN

Stack Overflow用户

发布于 2015-10-25 04:37:42

您可以自定义style.xml中的所有内容,从文本颜色到大小和字体。

代码语言:javascript
运行
复制
<style name="NavDrawerTextStyle" parent="Base.TextAppearance.AppCompat">
    <item name="android:textColor">@color/colorPrimaryDark</item>
    <item name="android:textSize">16sp</item>
    <item name="android:textStyle">bold</item>
</style>

然后在你的NavigationView

代码语言:javascript
运行
复制
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:openDrawer="start">

<android.support.design.widget.NavigationView
    ...
    android:itemTextAppearance="@style/NavDrawerTextStyle"
     />

票数 63
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31204320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档