web-dev-qa-db-ja.com

ナビゲーションドロワーでこのアイテムのパディングを克服する方法は?

私はすべての質問をチェックアウトし、ナビゲーションビューの各アイテム間のこのパディングを削除したいだけです。事前にこの問題を解決してください。

これは私の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>

私の画像は... Want to remove the padding showing in blue mark

13

NavigationViewのソースコード here が見つかったため、NavigationMenuPresenter(found here )に導かれ、メニューリストのすべての通常のタイプが_R.layout.design_navigation_item_を膨らませます。したがって、プレビュー( here )すると、どの設定が使用されているかがわかります。

_<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"/>
_

したがって、最後のステップは、スタイル属性、つまり"?attr/listPreferredItemHeightSmall" (default 48dp)を参照する_layout_height_をオーバーライドすることです。

Styles.xmlを開き、カスタム値を使用してオーバーライドします:

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

オリジナル:

enter image description here

カスタム:

enter image description here

31
deadfish

この行をdimens.xmlファイルに追加し、必要に応じてこのDPをカスタマイズします。この行で問題を解決しました。

<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

はい、このパラメーターをdimens.xmlファイルに追加するだけです

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

変更可能な他の値はこちら https://github.com/Android/platform_frameworks_support/blob/master/design/res/values/dimens.xml

[〜#〜]または[〜#〜]
完全にカスタマイズする場合は、このようにナビゲーションドロワー内に独自のリストビューを追加するだけです。

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

次に、リストビュー行に独自のカスタムパディングを提供します

3
Rahul Khurana

すべてのアイテムを1つのグループに入れることができ、パディングを削除する必要はありません

<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