Je vérifie toute la question et aussi beaucoup sur Google, je veux juste supprimer ce rembourrage entre chaque élément dans la vue de navigation. Aidez-moi à régler ce problème grâce à l'avance.
Ceci est le code de mon main_drawer
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:Android="http://schemas.Android.com/apk/res/Android">
<group Android:checkableBehavior="single" Android:id="@+id/home1"
>
<item
Android:id="@+id/home"
Android:title="Home"
/>
</group>
<group Android:checkableBehavior="single" Android:id="@+id/aboutus1">
<item
Android:id="@+id/nav_camera"
Android:title="AboutUs" />
</group>
<group Android:checkableBehavior="single" Android:id="@+id/Services1">
<item
Android:id="@+id/nav_gallery"
Android:title="Services" />
</group>
<group Android:checkableBehavior="single" Android:id="@+id/consultation1">
<item
Android:id="@+id/nav_slideshow"
Android:title="Consultation" />
</group>
<group Android:checkableBehavior="single" Android:id="@+id/gallery1">
<item
Android:id="@+id/nav_manage"
Android:title="Gallery" />
</group>
<group Android:checkableBehavior="single" Android:id="@+id/appoinment1">
<item
Android:id="@+id/nav_manage1"
Android:title="Appoinment" />
</group>
<group Android:checkableBehavior="single" Android:id="@+id/Contact_Us1">
<item
Android:id="@+id/Contact_Us"
Android:title="Contact Us" />
</group>
<item Android:title="Communicate">
<menu>
<item
Android:id="@+id/nav_share"
Android:icon="@drawable/ic_menu_share"
Android:title="Share" />
<item
Android:id="@+id/nav_send"
Android:icon="@drawable/ic_menu_send"
Android:title="Send" />
</menu>
</item>
</menu>
Selon le code source de NavigationView trouvé ici , cela m'a conduit à NavigationMenuPresenter (trouvé ici ) qui dit que chaque type normal dans la liste de menu gonfle R.layout.design_navigation_item
. Donc, si vous l'aperçu ( ici ), vous remarquerez quelle préférence il utilise.
<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:foreground="?attr/selectableItemBackground"
Android:focusable="true"/>
La dernière étape consiste donc à remplacer l'attribut style, c'est-à-dire layout_height
Qui fait référence à "?attr/listPreferredItemHeightSmall" (default 48dp)
.
Ouvrez votre styles.xml et remplacez-le en utilisant par exemple une valeur personnalisée:
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<!-- HERE-->
<item name="listPreferredItemHeightSmall">18dp</item>
</style>
Original:
Personnalisé:
Ajoutez cette ligne à votre fichier dimens.xml et personnalisez ce DP selon vos besoins. J'ai résolu mon problème par ces lignes.
<dimen name="design_navigation_padding_top_default" tools:override="true">5dp</dimen>
<dimen name="design_navigation_separator_vertical_padding" tools:override="true">0dp</dimen>
<dimen name="design_navigation_padding_bottom" tools:override="true">5dp</dimen>
<dimen name="design_navigation_icon_size" tools:override="true">20dp</dimen>
<dimen name="design_navigation_icon_padding" tools:override="true">12dp</dimen>
Oui, ajoutez simplement ce paramètre dans votre dimens.xml
fichier
<dimen name="design_navigation_separator_vertical_padding" tools:override="true">0dp</dimen>
d'autres valeurs possibles que vous pouvez modifier sont ici https://github.com/Android/platform_frameworks_support/blob/master/design/res/values/dimens.xml
[~ # ~] ou [~ # ~]
si vous souhaitez personnaliser entièrement, il vous suffit d'ajouter votre propre vue de liste dans le tiroir de navigation comme ceci.
<?xml version="1.0" encoding="utf-8"?>
<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">
<include
layout="@layout/app_bar_dashboard"
Android:layout_width="match_parent"
Android:layout_height="match_parent" />
<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"
>
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="vertical">
<include layout="@layout/nav_header_dashboard"
Android:id="@+id/header"/>
<ListView
Android:id="@+id/lst_menu_items"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_weight="1"
Android:background="@color/white"
Android:divider="@color/navigation_divider"
Android:dividerHeight="1dp"
Android:layout_marginTop="@dimen/padding10"/>
</LinearLayout>
</Android.support.design.widget.NavigationView>
</Android.support.v4.widget.DrawerLayout>
puis fournissez votre propre rembourrage personnalisé pour lister la ligne
Vous pouvez mettre tous vos articles dans un groupe, vous n'avez pas besoin de retirer le rembourrage
<group Android:checkableBehavior="single">
<item
Android:id="@+id/nav_camera"
Android:icon="@drawable/ic_menu_camera"
Android:title="Home" />
<item
Android:id="@+id/nav_gallery"
Android:icon="@drawable/ic_menu_gallery"
Android:title="Camera" />
<item ...
...>
</group>