如何使导航抽屉与recyclerviews完美配合?

时间:2018-06-26 19:28:33

标签: android xml android-recyclerview kotlin android-navigation-drawer

我有一个带有recyclerview和导航抽屉的活动。

当抽屉在回收站视图的前面并且我打开它时,它仍然出现在所有东西的后面。

但是当抽屉在recyclerview的后面时,recyclerview没有任何输入,并且抽屉工作正常。

Broken Layering

<?xml version="1.0" encoding="utf-8"?>

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:orientation="vertical"
android:fitsSystemWindows="true">

<android.support.v4.widget.DrawerLayout
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <FrameLayout
        android:id="@+id/content_frame"
        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="true" />

</android.support.v4.widget.DrawerLayout>

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_above="@id/footer"
    android:layout_below="@id/header">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recycler"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true" />
</RelativeLayout>

<RelativeLayout
    android:id="@+id/header"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <include
        android:id="@+id/toolbar"
        layout="@layout/toolbar" />
</RelativeLayout>

2 个答案:

答案 0 :(得分:0)

您需要检查视图的elevation属性。这样一来,视图就可以更改其z的位置,以便将其绘制在其他视图之上,并且即使位于视图层次结构的下方,也可以投影。

您的recyclerView项目似乎使用cardView,其默认标高为4dp,而navigationDrawer较少(我认为2dp?)。

答案 1 :(得分:0)

所以我已经解决了这个问题,当您在项目中添加一个抽屉式布局时,您需要将之前活动中的所有内容都放入content_frame中,否则它将把抽屉当做是普通的元素,并在其后面添加了输入。

https://developer.android.com/training/implementing-navigation/nav-drawer