如何删除导航视图中不必要的顶部填充?

How I can remove the unnecessary top padding of the Navigation view?

在 header 和图中显示的第一项之间有不必要的顶部填充。

如何删除它?

你可以在这里找到源代码: https://github.com/chrisbanes/cheesesquare

NavigationView 试图匹配 material 设计 specs for the navigation drawer,其中声明内容区域之间的 8dp space。通常没有办法覆盖 NavigationView 来专门破坏规范。

您应该阅读 Ian 的回答。 NavigationView 遵循 Material 准则,您不应违反这些规范。

但是,目前,您可以在您的项目中覆盖该值。

只需添加到您的 dimens.xml:

<dimen name="design_navigation_separator_vertical_padding">0dp</dimen>

警告:

  • 将来 Android 团队可以更改此值!
  • 相同的值应用于列表中的每个分隔符

NavigationView 使用 LinearLayout 作为 header 视图。 你可以在源代码中看到这个布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:orientation="vertical"
      android:paddingBottom="@dimen/design_navigation_separator_vertical_padding" />

您可以覆盖 dimens.xml 中的预定义尺寸;

<dimen name="design_navigation_padding_top_default" tools:override="true">0dp</dimen>
<dimen name="design_navigation_separator_vertical_padding" tools:override="true">0dp</dimen>
<dimen name="design_navigation_padding_bottom" tools:override="true">0dp</dimen>

其他可能的值在这里:https://github.com/android/platform_frameworks_support/blob/master/design/res/values/dimens.xml

非常简单的步骤: 将以下属性添加到您的基本应用程序主题 (stylename=AppTheme) Style.xml :

        <item name="listPreferredItemHeightSmall">18dp</item>

这里回答了

只需添加到您的 dimens.xml:

<dimen name="design_navigation_separator_vertical_padding">0dp</dimen>