设置自定义导航抽屉菜单项的重力

时间:2016-10-05 07:15:57

标签: android navigation-drawer android-design-library navigationview

我正在以实用方式向导航抽屉添加菜单项。所有项目都添加到导航视图的左侧,但是当我添加自定义菜单项时,它会将项目添加到导航视图的右侧。

我正在实际添加菜单项,如下所示:

        Menu menu = mNavigationView.getMenu();
        if (menu == null) return;

        // add home menu
        menu.add(0, 1, Menu.NONE, "Home");

        // add refer menu
        menu.add(0, 2, Menu.NONE, "Refer and Earn");

        // add points menu
        MenuItem menuItem = menu.add(0, 3, Menu.NONE, null);
        menuItem.setActionView(R.layout.layout_nav_menu_points);

        // add settings menu
        menu.add(0, 4, Menu.NONE, "Settings");

        // add about us menu
        menu.add(0, 5, Menu.NONE, "About us");

        // add logout menu
        menu.add(0, 6, Menu.NONE, "Logout");

以下是layout_nav_menu_points的代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:gravity="start|center_vertical"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Points"
            android:textColor="@android:color/black"
            android:textSize="@dimen/font_14" />

        <ImageView
            android:layout_width="@dimen/dimen_5"
            android:layout_height="@dimen/dimen_5"
            android:layout_marginLeft="@dimen/dimen_2"
            android:layout_marginRight="@dimen/dimen_2"
            android:contentDescription="@string/app_name"
            android:src="@drawable/shape_red_dot" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="-2dp"
        android:layout_marginLeft="@dimen/dimen_2"
        android:layout_marginRight="@dimen/dimen_2"
        android:orientation="horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="0"
            android:textColor="@color/textColorPrimary"
            android:textSize="@dimen/font_12" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="@dimen/dimen_2"
            android:layout_marginRight="@dimen/dimen_2"
            android:text="pt"
            android:textColor="@color/textColorPrimary"
            android:textSize="@dimen/font_12" />
    </LinearLayout>

</LinearLayout>

获得以下结果: enter image description here

编辑:我尝试使用RelativeLayout代替LinearLayout,但获得了相同的结果。以下是使用layout_nav_menu_points的{​​{1}}代码:

RelativeLayout

编辑:以下是<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="start" android:gravity="start|center_vertical" android:orientation="vertical"> <LinearLayout android:id="@+id/ll_points" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Points" android:textColor="@android:color/black" android:textSize="@dimen/font_14" /> <ImageView android:layout_width="@dimen/dimen_5" android:layout_height="@dimen/dimen_5" android:layout_marginLeft="@dimen/dimen_2" android:layout_marginRight="@dimen/dimen_2" android:contentDescription="@string/app_name" android:src="@drawable/shape_red_dot" /> </LinearLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="-2dp" android:layout_below="@id/ll_points" android:layout_marginLeft="@dimen/dimen_2" android:layout_marginRight="@dimen/dimen_2" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="0" android:textColor="@color/textColorPrimary" android:textSize="@dimen/font_12" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="@dimen/dimen_2" android:layout_marginRight="@dimen/dimen_2" android:text="pt" android:textColor="@color/textColorPrimary" android:textSize="@dimen/font_12" /> </LinearLayout> </RelativeLayout>

的代码
shape_red_dot

任何人都建议我如何像其他菜单项一样将“点”菜单移到左侧。感谢

1 个答案:

答案 0 :(得分:0)

在你的nav_menu_points中..请更改你的layout_gravity和重力值......

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"

    *** CHANGED CODE
    android:layout_gravity="left"
    android:gravity="left|center_horizontal"
    *** CHANGED CODE ENDS

    android:orientation="vertical">

结果图片:

enter image description here

重力和layout_gravity之间的差异.. 井重力,设置你的内容重力(它将在哪里),而layout_gravity,设置你的布局的重力。

希望它能解决问题。干杯!