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.
<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 ..
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>
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 ..
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>
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();
}
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>
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