Android 为什么navigationdrawer中的子视图的年表很重要?

Android 为什么navigationdrawer中的子视图的年表很重要?,android,android-layout,navigation-drawer,android-navigation,menu-items,Android,Android Layout,Navigation Drawer,Android Navigation,Menu Items,我在为我的应用程序开发导航抽屉时遇到了这个问题,当时子视图的时间顺序如下,一切都像一个符咒 <androidx.drawerlayout.widget.DrawerLayout android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent&q

我在为我的应用程序开发导航抽屉时遇到了这个问题,当时子视图的时间顺序如下,一切都像一个符咒

    <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>


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

在抽屉布局文档中,它说:

若要使用抽屉布局,请将主内容视图定位为第一个子视图,其宽度和高度为“匹配”\u parent,无布局\u gravity>。在主内容视图之后添加抽屉作为子视图,并适当设置布局。抽屉通常使用固定宽度的高度匹配


所以我的猜测是,内容必须是第一个孩子,因为菜单在你的内容上滑动。它可能是关于抽屉布局如何处理这些布局的背景。因此,如果您将其作为第二个子项,它将以某种方式重叠并禁用菜单本身上的单击事件。希望这能解释这一点。

抽屉布局文档中说:

若要使用抽屉布局,请将主内容视图定位为第一个子视图,其宽度和高度为“匹配”\u parent,无布局\u gravity>。在主内容视图之后添加抽屉作为子视图,并适当设置布局。抽屉通常使用固定宽度的高度匹配


所以我的猜测是,内容必须是第一个孩子,因为菜单在你的内容上滑动。它可能是关于抽屉布局如何处理这些布局的背景。因此,如果您将其作为第二个子项,它将以某种方式重叠并禁用菜单本身上的单击事件。希望这能解释这一点。

我真的不认为z-index很重要,因为如果视图附加了onClickListener,无论其位置和方式如何,都应该触发clickListener,对吗?在这种情况下,它不知何故没有被触发,我仍然不确定why@rcs我认为不应该总是触发onClick。有时,我在其他布局中遇到这种重叠问题,并且没有响应onClick事件。因为文档中除了这个没有其他内容,所以它只是说我们把它作为第一个孩子,所以它是在后台发生的。我找不到其他答案,我试图找到它,因为它让我很好奇。如果您有时间查看这个v4 DroperLayout源代码,也许有一个解决方案:感谢您的链接,我肯定会研究它。我真的不认为z索引很重要,因为如果视图附加了onClickListener,无论它在何处以及如何放置,clickListener都应该被触发,对吗?在这种情况下,它不知何故没有被触发,我仍然不确定why@rcs我认为不应该总是触发onClick。有时,我在其他布局中遇到这种重叠问题,并且没有响应onClick事件。因为文档中除了这个没有其他内容,所以它只是说我们把它作为第一个孩子,所以它是在后台发生的。我找不到其他答案,我试图找到它,因为它让我很好奇。如果您有时间查看这个v4 DroperLayout源代码,也许有一个解决方案:感谢您的链接,我们一定会研究它