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源代码,也许有一个解决方案:感谢您的链接,我们一定会研究它