web-dev-qa-db-fra.com

Comment surmonter ce rembourrage d'article dans le tiroir de navigation?

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>

Mon image est ... Want to remove the padding showing in blue mark

13

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:

enter image description here

Personnalisé:

enter image description here

31
deadfish

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>
9
Vivek Barai

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

3
Rahul Khurana

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>

enter image description here

1
Phan Van Linh