Recycler View下方彼此没有显示出来?

时间:2016-06-07 04:43:08

标签: android layout android-recyclerview relativelayout

我有两个简单的回收站视图,我想直接在彼此下方显示。这是我的布局:

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <include
            layout="@layout/drawer_view_header"
            android:id="@+id/navigation_header"/>

        <android.support.v7.widget.RecyclerView
            android:layout_below="@id/navigation_header"
            android:id="@+id/friends_list"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

        <android.support.v7.widget.RecyclerView
            android:layout_below="@id/friends_list"
            android:id="@+id/followers_list"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

    </RelativeLayout>

我的navigationHeader位于第一个名为friends_list的回收站视图上方,工作正常,我可以看到friends_list回收站视图,其android:layout_height="wrap_content"但{{1}尽管我的followers_list的所有内容都已显示,但回收器视图似乎并不显示。任何想法为什么它没有出现?谢谢!

5 个答案:

答案 0 :(得分:3)

虽然上述答案确实有效,但他们不会保留Recycler视图的换行内容行为,因为您需要使用NestedScrollView

例如,你需要做这样的事情: -

 <android.support.v4.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">

 <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <include
            layout="@layout/drawer_view_header"
            android:id="@+id/navigation_header"/>

        <android.support.v7.widget.RecyclerView
            android:layout_below="@id/navigation_header"
            android:id="@+id/friends_list"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

        <android.support.v7.widget.RecyclerView
            android:layout_below="@id/friends_list"
            android:id="@+id/followers_list"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

    </RelativeLayout>

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

或者您也可以在LinearLayout中使用NestedScrollView垂直对齐。

*注意: - 这只适用于23.2.0以上的回收商视图

compile 'com.android.support:recyclerview-v7:23.2.0'

答案 1 :(得分:0)

您必须为recyclerview设置高度 android提供重量来查看以调整不同的屏幕尺寸

    <RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:weightSum="2">

    <include
        layout="@layout/drawer_view_header"
        android:id="@+id/navigation_header"/>

    <android.support.v7.widget.RecyclerView
        android:layout_below="@id/navigation_header"
        android:id="@+id/friends_list"
        android:layout_width="match_parent"
        android:layout_height="150dp"
        android:layout_weight="1"/>

    <android.support.v7.widget.RecyclerView
        android:layout_below="@id/friends_list"
        android:id="@+id/followers_list"
        android:layout_width="match_parent"
        android:layout_height="150dp"
        android:layout_weight="1"/>

</RelativeLayout>

答案 2 :(得分:0)

    <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">

            <include
                layout="@layout/drawer_view_header"
                android:id="@+id/navigation_header"/>

            <android.support.v7.widget.RecyclerView
                android:id="@+id/friends_list"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="1"/>

            <android.support.v7.widget.RecyclerView
                android:id="@+id/followers_list"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="1"/>

   </LinearLayout>

答案 3 :(得分:0)

由于第一个RecyclerView的高度为wrap_content,您的第二个RecyclerView将不会显示,如果您有更多,RecyclerView将占据您布局的所有高度其中的物品。

要解决您的问题,请以root身份使用LinearLayout,并为layout_weight提供相同的layout_height="0dp"RecyclerView

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <include
        layout="@layout/drawer_view_header"
        android:id="@+id/navigation_header"/>

    <android.support.v7.widget.RecyclerView
        android:layout_below="@id/navigation_header"
        android:id="@+id/friends_list"
        android:layout_width="match_parent"
        android:layout_height="0dp"    
        android:layout_weight="1"/>    <---

    <android.support.v7.widget.RecyclerView
        android:layout_below="@id/friends_list"
        android:id="@+id/followers_list"
        android:layout_width="match_parent"
        android:layout_height="0dp"   
        android:layout_weight="1"/>    <---

</LinearLayout>

这将显示两个占用相同空间(高度)的RercyclerView。

答案 4 :(得分:0)

试试这个。它正在运作。

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity">
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">

        <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center_vertical"
                android:paddingBottom="10dp"
                android:text="Asia"
                android:textStyle="bold" />

        <android.support.v7.widget.RecyclerView
                android:id="@+id/recycler1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />

                <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"


             android:layout_marginTop="@dimen/activity_horizontal_margin"
                android:gravity="center_vertical"
                android:paddingBottom="10dp"
                android:text="Europe"
                android:textStyle="bold" />

            <android.support.v7.widget.RecyclerView
                android:id="@+id/recycler2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />

            <Button
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:background="@drawable/cardview"
                android:textColor="#fff"
                android:layout_weight="1"
                android:id="@+id/select"
                android:text="Select all"/>
            <Button
                android:layout_width="match_parent"
                android:layout_height="50dp"
                android:layout_marginLeft="5dp"
                android:background="@drawable/cardview"
                android:textColor="#fff"
                android:layout_weight="1"
                android:id="@+id/deselect"
                android:text="Deselct all"/>
            <Button
                android:layout_width="match_parent"
                android:layout_height="50dp"
                android:layout_weight="1"
                android:layout_marginLeft="5dp"
                android:background="@drawable/cardview"
                android:textColor="#fff"
                android:id="@+id/next"
                android:visibility="visible"
                android:text="Next activity"/>

        </LinearLayout>
    </ScrollView>
</android.support.v4.widget.NestedScrollView>