web-dev-qa-db-ja.com

Android)にナビゲーションドロワー用のセクションセパレーターを1つ追加します

この画像のようなナビゲーションドロワーがあります。セクションセパレータを追加したい。簡単そうに見えますが、私の場合に役立つものはWeb上に見つかりません。

-Expressの下に行区切り記号を追加します

個人情報の下に行区切り記号を追加します

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>

エクスプレスを使用し、パディングを使用するのとは別のグループに情報を入力する場合、このコードを実行しました

これを達成する方法を私に提案してください..

11
Tufan

これを試して....

    <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>

enter image description here

確かに@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>

新しいスクリーンショットは、これを追加してパディングを削除します。

enter image description here

12
Arjun saini

次のように、メニュー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>
0
Alex

これがアクティビティのレイアウトです。他のものはフレームレイアウト内に配置する必要があります。

<?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();
}
0
gunescelil

これがあなたの解決策ですこれを好きにしてください

<?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

<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"でラップされたアイテムを設定することを忘れないでください。

出典: この回答

0
Vinicius DSL