web-dev-qa-db-fra.com

Ajouter un séparateur de section pour le tiroir de navigation dans Android

J'ai un tiroir de navigation comme cette image. Je veux ajouter un séparateur de section. Cela semble simple, mais je ne trouve rien sur le Web qui soit utile à mon cas.

- Ajoute un séparateur de ligne sous Express

Ajoute un séparateur de ligne sous Mes informations

 enter image description here

        <menu xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:title="Express">
    <menu>
        <group
            Android:id="@+id/me"
            Android:checkableBehavior="single">
            <item
                Android:id="@+id/nav_balance_transfer"
                Android:icon="@mipmap/icon_wallet_transfer"
                Android:title="Balance Transfer" />

            <item
                Android:id="@+id/nav_load_money"
                Android:icon="@mipmap/icon_load_money"
                Android:title="Load Money" />
            <item
                Android:id="@+id/nav_report"
                Android:icon="@mipmap/icon_history"
                Android:title="Report" />
        </group>
    </menu>
</item>
<item Android:title="My Information">
    <menu>

        <group
            Android:id="@+id/menu_nav_temp_gid"
            Android:checkableBehavior="none">
            <item
                Android:id="@+id/nav_profile"
                Android:icon="@mipmap/icon_profile"
                Android:title="My Account" />
            <item
                Android:id="@+id/nav_changePassword"
                Android:icon="@mipmap/icon_change"
                Android:title="Change Password" />
            <item
                Android:id="@+id/nav_ViewUser"
                Android:icon="@mipmap/ic_view_user"
                Android:title="View User" />
            <item
                Android:id="@+id/nav_addUser"
                Android:icon="@mipmap/icon_adduser"
                Android:title="Add User" />
            <item
                Android:id="@+id/nav_addScheme"
                Android:icon="@mipmap/icon_add_scheme"
                Android:title="Add Scheme" />

            <item
                Android:id="@+id/nav_logout"
                Android:icon="@mipmap/icon_logout"
                Android:title="Log Out" />

        </group>
    </menu>
</item>

j'avais fait ce code si je prends express et mes informations dans un groupe séparé qu'il faut rembourrage

suggère moi comment y arriver ..

8
Tufan

Essaye ça....

    <group>
    <item Android:title="Express">
    </item>
    </group>



            <group
                Android:id="@+id/grpid1"
                Android:checkableBehavior="single">
                <item
                    Android:id="@+id/nav_balance_transfer"
                    Android:icon="@mipmap/ic_launcher"
                    Android:title="Balance Transfer" />

                <item
                    Android:id="@+id/nav_load_money"
                    Android:icon="@mipmap/ic_launcher"
                    Android:title="Load Money" />
                <item
                    Android:id="@+id/nav_report"
                    Android:icon="@mipmap/ic_launcher"
                    Android:title="Report" />
            </group>



    <group>
    <item Android:title="My Information">



        </item>
    </group>


            <group
                Android:id="@+id/grpid2"
                Android:checkableBehavior="none">
                <item
                    Android:id="@+id/nav_profile"
                    Android:icon="@mipmap/ic_launcher"
                    Android:title="My Account" />
                <item
                    Android:id="@+id/nav_changePassword"
                    Android:icon="@mipmap/ic_launcher"
                    Android:title="Change Password" />
                <item
                    Android:id="@+id/nav_ViewUser"
                    Android:icon="@mipmap/ic_launcher"
                    Android:title="View User" />
                <item
                    Android:id="@+id/nav_addUser"
                    Android:icon="@mipmap/ic_launcher"
                    Android:title="Add User" />
                <item
                    Android:id="@+id/nav_addScheme"
                    Android:icon="@mipmap/ic_launcher"
                    Android:title="Add Scheme" />

                <item
                    Android:id="@+id/nav_logout"
                    Android:icon="@mipmap/ic_launcher"
                    Android:title="Log Out" />

            </group>


    </menu>

Il semblerait que vous deviez simplement attribuer à vos balises group des identifiants uniques.

<group Android:id="@+id/ids">
    <!-- Divider will appear above this item -->
    <item ... />
</group>

 enter image description here

Bien sûr, @Tufan je peux résoudre ce problème aussi

Faites ceci ... mettez ces lignes dans votre dimen.xml

<dimen name="design_navigation_padding_top_default" tools:override="true">0dp</dimen>
<dimen name="design_navigation_separator_vertical_padding" tools:override="true">0dp</dimen>
<dimen name="design_navigation_padding_bottom" tools:override="true">0dp</dimen>

dimen.xml

<resources
    xmlns:tools="http://schemas.Android.com/tools"
    >

    <dimen name="design_navigation_padding_top_default" tools:override="true">0dp</dimen>
    <dimen name="design_navigation_separator_vertical_padding" tools:override="true">0dp</dimen>
    <dimen name="design_navigation_padding_bottom" tools:override="true">0dp</dimen>
    <dimen name="navigation_separator_vertical_padding">0dp</dimen>

</resources>

New Screenshot supprimer padding par add this ..

 enter image description here

8
Arjun saini

Vous devez créer des groupes avec différents identifiants dans votre fichier XML de menu comme ceci:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <group
        Android:id="@+id/menu_section_1"
        Android:checkableBehavior="single">
        <item
            Android:id="@+id/drawer_item_1"
            Android:icon="@drawable/ic_item_1"
            Android:title="@string/drawer_item_1"/>
        <item
            Android:id="@+id/drawer_item_2"
            Android:icon="@drawable/ic_item_2"
            Android:title="@string/drawer_item_2"/>
    </group>
    <group
        Android:id="@+id/menu_section_2"
        Android:checkableBehavior="none">
        <item
            Android:id="@+id/drawer_item_3"
            Android:icon="@drawable/ic_item_3"
            Android:title="@string/drawer_item_3" >
        </item>
    </group>
</menu>
0
Alex

Ceci est la mise en page des activités. Vous devez placer les autres éléments dans la structure du cadre.

<?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"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:id="@+id/drawer_layout"
Android:fitsSystemWindows="true">

<!-- your content layout -->
<FrameLayout
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:id="@+id/content_frame">



</FrameLayout>

<Android.support.design.widget.NavigationView
    Android:layout_width="wrap_content"
    Android:layout_height="match_parent"
    Android:layout_gravity="start"
    app:headerLayout="@layout/nav_header"
    Android:id="@+id/navigation_view"
    app:menu="@menu/drawer_view"/>

 </Android.support.v4.widget.DrawerLayout>

ci-dessous est mon fichier tiroir_view dans le répertoire res/menu

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <group>
        <item
            Android:title="Label1"
            Android:id="@+id/asd">
        </item>
   </group>


    <group
        Android:checkableBehavior="single"
        Android:id="@+id/nav_file_navigation">
        <item
            Android:id="@+id/nav_all_files"
            Android:icon="@drawable/all"
            Android:title="All Files" />
        <item
            Android:id="@+id/nav_memory_card"
            Android:icon="@drawable/sd_card"
            Android:title="Memory Card"
            />
        <item
            Android:id="@+id/nav_pictures"
            Android:icon="@drawable/picture"
            Android:title="Pictures" />
        <item
            Android:id="@+id/nav_videos"
            Android:icon="@drawable/play_button"
            Android:title="Video" />
        <item
            Android:id="@+id/nav_music"
            Android:icon="@drawable/music_player"
            Android:title="Music" />
        <item
            Android:id="@+id/nav_documents"
            Android:icon="@drawable/document"
            Android:title="Documents" />
        <item
            Android:id="@+id/nav_download"
            Android:icon="@drawable/download"
            Android:title="Downloads"
            />
    </group>

    <group>
        <item
            Android:title="Label1"
            Android:id="@+id/asd">
        </item>
   </group>


     <group
         Android:checkableBehavior="single"
         Android:id="@+id/nav_others"
         >
        <item
            Android:id="@+id/nav_certificate"
            Android:icon="@drawable/certificate"
            Android:title="Set Certificate"/>
         <item
             Android:id="@+id/nav_email"
             Android:icon="@drawable/mail_gray"
             Android:title="Email"
             />
        <item
            Android:id="@+id/nav_setting"
            Android:icon="@drawable/settings"
            Android:title="Settings"/>
        <item
            Android:id="@+id/nav_help"
            Android:icon="@drawable/help"
            Android:title="Help" />
        <item
            Android:id="@+id/nav_log_out"
            Android:icon="@drawable/log_out"
            Android:title="Log Out" />

     </group>
</menu>

Ceci est un en-tête de tiroir de navigation:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="140dp"
    Android:background="@color/lightGray"
    Android:theme="@style/ThemeOverlay.AppCompat.Dark"
    Android:orientation="vertical"
    Android:gravity="center_vertical">

    <ImageView
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:id="@+id/navigation_header_image"
        Android:background="@color/lightGray"
        Android:src="@drawable/drawer_header"
        Android:padding="16dp"
        />


</FrameLayout>

Dans l'activité sur la méthode create ()

mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);

    mNavigationView = (NavigationView) findViewById(R.id.navigation_view);
    mNavigationView.setItemIconTintList(null);
    mNavigationView.setNavigationItemSelectedListener(new      NavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(MenuItem item) {
            item.setChecked(true);
            onNavigationItemClicked(item);
            return true;
        }
    });

before on create déclare cette variable.

public NavigationView mNavigationView;
public DrawerLayout mDrawerLayout;

la méthode onNavigationClicked () est

public void onNavigationItemClicked(MenuItem item){
 //Do whatever you want to do with item. You can get its title and depending
 //on the title you can do what you want.

 mDrawerLayout.closeDrawers();
}
0
gunescelil

Voici votre solution Faites comme ça

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:Android="http://schemas.Android.com/apk/res/Android">

        <group>
                <item
                    Android:title="Express">
                </item>
        </group>

    <menu>

        <group Android:checkableBehavior="single">
            <item
                Android:id="@+id/nav_camera"
                Android:icon="@drawable/ic_menu_camera"
                Android:title="Import" />
            <item
                Android:id="@+id/nav_gallery"
                Android:icon="@drawable/ic_menu_gallery"
                Android:title="Gallery" />
            <item
                Android:id="@+id/nav_slideshow"
                Android:icon="@drawable/ic_menu_slideshow"
                Android:title="Slideshow" />
            <item
                Android:id="@+id/nav_manage"
                Android:icon="@drawable/ic_menu_manage"
                Android:title="Tools" />
         </group>

    </menu>

    <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>
0
Rishikesh pathak

Qu'en est-il supprimer le <Menu> et envelopper l'élément de séparateur avec un groupe.

À partir de ceci:

<item Android:title="Express">
<menu>
    <group
        Android:id="@+id/me"
        Android:checkableBehavior="single">
        <item
            Android:id="@+id/nav_balance_transfer"
            Android:icon="@mipmap/icon_wallet_transfer"
            Android:title="Balance Transfer" />

        <item
            Android:id="@+id/nav_load_money"
            Android:icon="@mipmap/icon_load_money"
            Android:title="Load Money" />
        <item
            Android:id="@+id/nav_report"
            Android:icon="@mipmap/icon_history"
            Android:title="Report" />
    </group>
</menu>

Pour ça

    <group Android:id="@+id/id1">
       <item Android:title="Express"
        Android:enabled="false">
    </group>
    <group
        Android:id="@+id/me"
        Android:checkableBehavior="single">
        <item
            Android:id="@+id/nav_balance_transfer"
            Android:icon="@mipmap/icon_wallet_transfer"
            Android:title="Balance Transfer" />

        <item
            Android:id="@+id/nav_load_money"
            Android:icon="@mipmap/icon_load_money"
            Android:title="Load Money" />
        <item
            Android:id="@+id/nav_report"
            Android:icon="@mipmap/icon_history"
            Android:title="Report" />
    </group>

N'oubliez pas de définir l'élément enveloppé avec Android:enabled="false" pour supprimer les effets tactiles.

Source: Cette réponse

0
Vinicius DSL