Android: tamaño del elemento del cajón de navegación

Aug 19 2020

Tengo una aplicación de Android con un cajón de navegación. El cajón obtiene sus elementos de un archivo de recursos de menú.

<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" />

El elemento activo tiene una capa semitransparente encima, es el material predeterminado. Mi problema es con el tamaño / margen de esa capa.

Me gustaría tener esto:

En lugar de esto: https://i.stack.imgur.com/Zlp9p.png

Puedo cuadrarlo siguiendo esta respuesta , pero todavía tiene un pequeño margen alrededor.

¿Cómo puedo lograrlo?

Respuestas

1 GabrieleMariotti Aug 19 2020 at 13:33

Puede usar los itemShapeInset*atributos para llenar todo el espacio:

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

y el itemShapeAppearanceOverlaytener esquinas cuadradas:

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

AagitoEx Aug 19 2020 at 12:02

¿Ha intentado cambiar este atributo app:itemHorizontalPadding="0dp"?

echosoftware Aug 19 2020 at 12:51

Tu quieres esto

 <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" />

estilos

  <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>

añadir attr.xmlenvalues

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

    <attr name="drawableNavigationItemBackground" format="reference" />
</resources>