Android 如何禁用手动滑出导航视图
我的活动中有两个导航视图。一个从右边进入,另一个从左边进入 在从左侧进入的navigtionview中,单击项目时会启动不同的片段。同样,这个navigationview也有菜单项,这些菜单项对于所有启动的片段都是通用的。我对这个没有任何问题 现在,从右侧进入的navigationview有一些菜单项,这些菜单项仅在单击左侧进入navigationview的第一项时启动的特定片段特有。这意味着,当您单击左侧进入导航抽屉中的第一个项目时,将启动fragament,并且右侧进入导航视图中的项目具有与此片段相关的项目 因此,单击工具栏中的菜单项时,右导航视图将启动。当看到其他片段(除上述片段外)时,此菜单项不可见 我遇到的问题是,即使右键进入navigationview无法通过其他片段中的菜单项启动,它仍然可以通过滑动屏幕的右边缘启动。所以我想完全禁用这个右键进入navigationview的滑动功能,这样它只能在单击菜单项时启动 代码 主要活动Android 如何禁用手动滑出导航视图,android,navigation-drawer,Android,Navigation Drawer,我的活动中有两个导航视图。一个从右边进入,另一个从左边进入 在从左侧进入的navigtionview中,单击项目时会启动不同的片段。同样,这个navigationview也有菜单项,这些菜单项对于所有启动的片段都是通用的。我对这个没有任何问题 现在,从右侧进入的navigationview有一些菜单项,这些菜单项仅在单击左侧进入navigationview的第一项时启动的特定片段特有。这意味着,当您单击左侧进入导航抽屉中的第一个项目时,将启动fragament,并且右侧进入导航视图中的项目具有与
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
android:id="@+id/drawer_layout"
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:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:openDrawer="start">
<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="start"
android:fitsSystemWindows="false"
app:headerLayout="@layout/nav_header_main"
app:menu="@menu/activity_main_drawer"/>
<android.support.design.widget.NavigationView
android:id="@+id/cat_nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="end"
android:fitsSystemWindows="false">
/** This navigationview enters from the right, I start a fragment with framelayout below.
The fragment contains a recyclerview **/
<FrameLayout
android:id="@+id/transport_cat_container"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</android.support.design.widget.NavigationView>
</android.support.v4.widget.DrawerLayout>
DrawerLayout#setDrawerLockMode()
方法就是您想要的。锁定后,抽屉视图
无法拖动打开/关闭,尽管它仍会响应openDrawer()
和closeDrawer*()
方法
由于您使用两个抽屉,并且只想锁定其中一个,因此需要使用第二个参数调用该方法以指示要锁定/解锁的抽屉。例如,要关闭辅助抽屉,请执行以下操作:
drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, GravityCompat.END);
我不确定您是否打算从
片段
本身执行此操作,但在任何情况下,都应该有所帮助。DrawerLayout#setDrawerLockMode()
方法就是您想要的。在您的情况下,您可以使用第二个参数调用它,以指定要锁定/解锁的抽屉;e、 例如,drawer.setDrawerLockMode(lockMode,GravityCompat.END)
。忽略ActionBarDrawerToggle
之类的东西,因为它不适用于第二个抽屉。@MikeM。请输入您的评论作为回答?我将它与第二个参数一起使用,它修复了它。
drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, GravityCompat.END);