如何以编程方式将 gravity_layout 设置为 NavigationView - Android

How programatically set gravity_layout to NavigationView - Android

在我的应用程序中,用户可以选择在哪一侧使用 NavigationView

如何以编程方式设置 layout_gravity="end"?

<android.support.design.widget.NavigationView
    android:id="@+id/main_navigation_view"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:background="#FFF"
    >


    <ListView
    android:id="@+id/listView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:divider="@color/light_grey"
    android:dividerHeight="0.5dp">

    </ListView>

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

在 Activity 中声明并初始化您的 DrawerLayout 变量,并使用以下行设置其引力:

drawer.openDrawer(Gravity.LEFT);

其中 drawer 是你的 DrawerLayout 的变量,你可以根据需要设置重力。

您可以使用openDrawer()方法以编程方式打开抽屉

void openDrawer (int gravity)

Open the specified drawer by animating it out of view.

Parameters gravity int: Gravity.LEFT to move the left drawer or Gravity.RIGHT for the right. GravityCompat.START or GravityCompat.END may also be used.

示例代码

drawer.OpenDrawer(Gravity.LEFT);
drawer.OpenDrawer(Gravity.RIGHT);

你可以玩这个:

 DrawerLayout.LayoutParams params = new DrawerLayout.LayoutParams(DrawerLayout.LayoutParams.WRAP_CONTENT, DrawerLayout.LayoutParams.MATCH_PARENT);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
            params.setLayoutDirection(Gravity.START);
        }
        navigationView.setLayoutParams(params);

科特林

为此,整个 xml 必须是一个 DrawerLayout(ID 为 drawer_layout,包含一个 NavigationView

val params = drawer_layout.main_navigation_view.layoutParams as DrawerLayout.LayoutParams

然后从左侧打开

params.gravity = Gravity.START

或从右侧

params.gravity = Gravity.END