この画像のようなナビゲーションドロワーがあります。セクションセパレータを追加したい。簡単そうに見えますが、私の場合に役立つものはWeb上に見つかりません。
<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>
エクスプレスを使用し、パディングを使用するのとは別のグループに情報を入力する場合、このコードを実行しました
これを達成する方法を私に提案してください..
これを試して....
<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>
group
タグに一意のIDを指定する必要があるようです。
<group Android:id="@+id/ids">
<!-- Divider will appear above this item -->
<item ... />
</group>
確かに@Tufan私もこの問題を解決することができます
これを行う...これらの行を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>
新しいスクリーンショットは、これを追加してパディングを削除します。
次のように、メニューXMLファイルに異なるIDのグループを作成する必要があります。
<?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>
これがアクティビティのレイアウトです。他のものはフレームレイアウト内に配置する必要があります。
<?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>
以下はres/menuディレクトリにある私のdrawer_viewファイルです
<?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>
これはナビゲーションドロワーヘッダーです。
<?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>
アクティビティの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;
}
});
作成する前に、この変数を宣言します。
public NavigationView mNavigationView;
public DrawerLayout mDrawerLayout;
onNavigationClicked()メソッドは
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();
}
これがあなたの解決策ですこれを好きにしてください
<?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>
<Menu>
を削除し、区切り項目をグループでラップするのはどうですか。
これから:
<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>
これに
<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>
タッチ効果を削除するには、Android:enabled="false"
でラップされたアイテムを設定することを忘れないでください。
出典: この回答