1

我在为我的应用程序开发导航抽屉时遇到了这个问题,当子视图的年表如下时,一切都像魅力一样

    <androidx.drawerlayout.widget.DrawerLayout
        android:id="@+id/drawer_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:openDrawer="start">

        <fragment
            android:id="@+id/nav_host_fragment"
            android:name="androidx.navigation.fragment.NavHostFragment"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:defaultNavHost="true"
            app:navGraph="@navigation/main_nav_graph" />

        <com.google.android.material.navigation.NavigationView
            android:id="@+id/nav_view"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="start"
            app:headerLayout="@layout/nav_header"
            app:menu="@menu/nav_menu" />
    </androidx.drawerlayout.widget.DrawerLayout>

如果子视图如下,则菜单项停止响应点击

    <androidx.drawerlayout.widget.DrawerLayout
        android:id="@+id/drawer_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:openDrawer="start">

        <com.google.android.material.navigation.NavigationView
            android:id="@+id/nav_view"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="start"
            app:headerLayout="@layout/nav_header"
            app:menu="@menu/nav_menu" />

        <fragment
            android:id="@+id/nav_host_fragment"
            android:name="androidx.navigation.fragment.NavHostFragment"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:defaultNavHost="true"
            app:navGraph="@navigation/main_nav_graph" />
    </androidx.drawerlayout.widget.DrawerLayout>

因此,导航抽屉内子视图的年表很重要,我想知道为什么?

4

1 回答 1

0

在 DrawerLayout 的文档中,它说:

要使用 DrawerLayout,请将您的主要内容视图定位为第一个子视图,其宽度和高度为 match_parent 并且没有 layout_gravity>。在主要内容视图之后添加抽屉作为子视图,并适当地设置 layout_gravity。抽屉通常使用 match_parent 作为固定宽度的高度。

文档来源:DrawerLayout

所以我对此的猜测是,内容需要是第一个孩子,因为菜单在你的内容上滑动。DrawerLayout 如何处理这些布局可能在后台。所以如果你把它作为第二个孩子,它会以某种方式重叠并禁用菜单本身的点击事件。希望这能解释它。

于 2021-01-04T11:00:18.623 回答