如何将自定义NavigationView与自定义菜单项布局对齐到最左侧

时间:2016-10-10 23:12:44

标签: android layout menu navigationview

我需要将菜单(全宽导航抽屉)中的项目与其图标左侧对齐,并在其下方放置一些文本,每个项目应该在一个正方形包裹其内容,因此这些项目就像一个塔左对齐。因为我为他们制作了自定义布局xml。

但我无法使菜单项的自定义布局在屏幕的最左侧对齐。 (菜单抽屉从右向左打开)。 我的activity_main.xml

    <?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginEnd="0dp"
    android:fitsSystemWindows="true"
    tools:openDrawer="end">

    <include
        layout="@layout/app_bar_main"
        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="end"
        android:layout_marginEnd="0dp"
        android:fitsSystemWindows="true"
        android:layoutDirection="rtl">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">

            <LinearLayout
                android:id="@+id/header"
                android:layout_width="match_parent"
                android:layout_height="172dp"
                android:background="@drawable/my_custom_background"
                android:orientation="horizontal">
            </LinearLayout>

            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent">

                <ImageView
                    android:id="@+id/icon"
                    android:layout_width="20dp"
                    android:layout_height="20dp"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentStart="true"
                    android:src="@drawable/ic_menu_camera"/>

                <TextView
                    android:id="@+id/title"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentTop="true"
                    android:layout_toEndOf="@+id/icon"
                    android:layout_toRightOf="@+id/icon"
                    android:gravity="center_vertical"
                    android:text="Line 1"
                    android:textColor="#000"
                    android:textStyle="bold"/>

                <TextView
                    android:id="@+id/subTitle"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/title"
                    android:layout_toRightOf="@+id/icon"
                    android:text="Line 2"/>

            </RelativeLayout>
        </LinearLayout>

    </android.support.design.widget.NavigationView>

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

Your_custom_menu_layout.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:gravity="start|top"
              android:orientation="vertical"
              android:layoutDirection="rtl"
              android:background="@drawable/border_set"
              android:padding="10dip">
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:paddingLeft="0dp"
        android:paddingRight="0dp"
        android:src="@drawable/ic_menu_camera"
        />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:paddingStart="0dp"
        android:text="your_text"
        android:textColor="@color/black"
        android:textSize="9dp" />
</LinearLayout>

activity_main_drawer.xml

    <?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto"
      android:layoutDirection="ltr">

    <group android:checkableBehavior="single">
        <item
            android:id="@+id/nav_camera"
            android:icon="@drawable/ic_menu_camera"
            android:title=""
            app:showAsAction="never"
            app:actionLayout="@layout/your_custom_menu_layout"/>
        <item
            android:id="@+id/nav_gallery"
            android:icon="@drawable/ic_menu_gallery"
            android:title=""
            app:showAsAction="never"
            app:actionLayout="@layout/your_custom_menu_layout"/>
        <item
            android:id="@+id/nav_slideshow"
            android:icon="@drawable/ic_menu_slideshow"
            android:title="Slideshow"
            app:showAsAction="always"
            app:actionLayout="@layout/your_custom_menu_layout"/>
        <item
            android:id="@+id/nav_manage"
            android:icon="@drawable/ic_menu_manage"
            android:title="Tools"
            app:showAsAction="always"
            app:actionLayout="@layout/your_custom_menu_layout"/>
    </group>

    <item android:title="Communicate">
        <menu>
            <item
                android:id="@+id/nav_share"
                android:icon="@drawable/ic_menu_share"
                android:title="Share"
                app:actionLayout="@layout/your_custom_menu_layout"/>
            <item
                android:id="@+id/nav_send"
                android:icon="@drawable/ic_menu_send"
                android:title="Send"
                app:actionLayout="@layout/your_custom_menu_layout"/>
        </menu>
    </item>

</menu>

What I get:

What I need:

1 个答案:

答案 0 :(得分:0)

在Your_custom_menu_layout.xml中,

在父线性布局中删除

android:padding="10dip"

它将从所有侧面给出10 dp填充。所以只有你无法看到你的TextView。删除后,您可以获得所需的结果。一切顺利。