Android 中 NavigationView 的项内边距

6
我该如何为NavigationView中的项目设置填充?由于我已删除图标,因此需要为项目设置paddingLeft。我尝试过以下方法,但没有效果:
<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:id="@+id/nav_view"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:fitsSystemWindows="true"
    android:focusable="true"
    android:foreground="?attr/selectableItemBackground"
    app:headerLayout="@layout/nav_header_navigation_drawer"
    app:itemBackground="@drawable/selected_background"
    app:itemTextAppearance="@style/Drawer"
    app:menu="@menu/activity_navigation_drawer_drawer" />

我的styles文件夹中的Drawer.xml文件:

<style name="Drawer">
    <item name="android:listPreferredItemPaddingLeft">50dp</item>
    <item name="android:textSize">30sp</item>
    <item name="android:typeface">serif</item>
</style>

2
试一下,希望对你有用。https://dev59.com/11kS5IYBdhLWcg3waV_D#39914592 - Shashank Verma
4
可能是如何克服导航抽屉中的此项目填充?的重复问题。 - Dima Kozhevin
@SumitShukla,您想在NavigationView内的图标和TextView之间添加填充吗? - Sardar Khan
@SardarKhan。不,我已经删除了所有这些图标,我希望所有的textView都从左边填充... - Sumit Shukla
4个回答

10

如果有人想要使用最新的Material Design来调整NavigationDrawer中项目的填充,请查看这些新属性app:itemIconPaddingapp:itemHorizontalPadding

app:itemIconPadding将调整图标和项目文本之间的填充。 app:itemHorizontalPadding,顾名思义,将调整项目左右两侧的水平填充。

<com.google.android.material.navigation.NavigationView
            android:id="@+id/nav_view"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="start"
            android:fitsSystemWindows="true"

            app:itemIconPadding="16dp"
            app:itemHorizontalPadding="10dp"

            app:menu="@menu/nav_drawer_menu" />`

5

由于您正在使用没有图标的菜单,因此可以使用app:itemHorizontalPadding属性:

<com.google.android.material.navigation.NavigationView
    app:itemHorizontalPadding="2dp"
    ../>

使用默认值和自定义值的结果:

enter image description here enter image description here

使用app:itemShapeInsetStart="0dp"来更改形状的边距:

enter image description here


嗨,这与主题无关,但我该如何实现具有边距和圆角的活动指示器? - Gilbert Mendoza
1
@GilbertMendoza 请查看此答案:https://stackoverflow.com/questions/55933739/add-custom-shape-ripple-with-selector-on-navigationview-menu-item/58683034#58683034 - Gabriele Mariotti

4
您可以通过更改应用程序主题中的“listPreferredItemHeightSmall”值来更改导航项的垂直填充。
<!-- Your application theme -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <!-- THIS LINE-->
    <item name="listPreferredItemHeightSmall">54dp</item>
</style>

(默认值为48dp)

0

您可以在res->values->dimension文件夹下添加此值,并添加以下代码行。

<dimen name="design_navigation_icon_padding" tools:override="true">8dp</dimen>

2
我被要求这样做。这就是为什么!! - Sumit Shukla
如果有任何问题,请查看此帖子 https://dev59.com/BVoV5IYBdhLWcg3wVNeZ#36417267 - Sardar Khan
没有起作用!!感谢您的努力。我的代码有问题还是我漏掉了什么...... - Sumit Shukla
你可以尝试使用图标,包括...如果可行的话,请告诉我,我会告诉你一个解决方法。 - Sardar Khan
你可以制作自己的定制导航抽屉,可以控制所有的东西...但这需要时间。 - Sardar Khan
显示剩余6条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接