【问题标题】:Android: Navigation drawer item sizeAndroid:导航抽屉项目大小
【发布时间】:2020-12-08 06:22:37
【问题描述】:

我有一个带有导航抽屉的 Android 应用。抽屉从菜单资源文件中获取其项目。

<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:headerLayout="@layout/nav_header_main"
    app:menu="@menu/activity_main_drawer" />

活动项目上面有一个半透明层,它是默认的东西。我的问题在于该层的大小/边距。

我想要这个:

而不是这个:https://i.stack.imgur.com/Zlp9p.png

我可以让它跟随this answer,但它周围仍然有一个小的边距。

我怎样才能实现它?

【问题讨论】:

    标签: android navigation-drawer android-navigationview


    【解决方案1】:

    您可以使用 itemShapeInset* 属性来填充整个空间:

    <com.google.android.material.navigation.NavigationView
     app:itemShapeInsetStart="0dp"
     app:itemShapeInsetEnd="0dp"
     app:itemShapeAppearanceOverlay="@style/ShapeAppearanceOverlay.Nav.Square"
    

    和itemShapeAppearanceOverlay 有方角:

    <style name="ShapeAppearanceOverlay.Nav.Square" parent="">
        <item name="cornerSize">0dp</item>
    </style>
    

    【讨论】:

    • 按预期工作。谢谢! (我已编辑以包含顶部和底部属性。)
    【解决方案2】:

    您是否尝试过更改此属性app:itemHorizontalPadding="0dp"。

    【讨论】:

    • itemHorizontalPadding 缩小了图标前后的空格,但与itemShape 无关
    【解决方案3】:

    你想要这个

     <com.google.android.material.navigation.NavigationView
        android:id="@+id/nav_view"
        style="@style/Widget.Custom.NavigationView"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:clipToPadding="false"
        android:fitsSystemWindows="true"
        android:theme="@style/NavigationTheme"
        app:headerLayout="@layout/nav_header_main"
        app:itemHorizontalPadding="45dp"
        app:itemIconPadding="@dimen/_17sdp"
        app:itemIconTint="#000"
        app:itemTextColor="#000"
        app:menu="@menu/activity_main_drawer" />
    

    样式

      <style name="Widget.Custom.NavigationView" parent="Widget.Design.NavigationView">
        <item name="itemIconTint">?attr/colorNavigationItem</item>
        <item name="itemTextColor">?attr/colorNavigationItem</item>
        <item name="itemBackground">?attr/drawableNavigationItemBackground</item>
    </style>
    <style name="NavigationTheme" parent="AppTheme">
        <item name="android:layout_marginBottom">4dp</item>
    </style>
    

    在values中添加attr.xml

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <attr name="colorNavigationItem" format="color" />
        <attr name="colorNavigationItemSelected" format="color" />
    
        <attr name="drawableNavigationItemBackground" format="reference" />
    </resources>
    

    【讨论】:

    • 没有理由使用自定义属性。不要使用传统样式,而是使用 Material Components 主题提供的默认样式 Widget.MaterialComponents.NavigationView 并使用 itemShape* attributes
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 2020-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多