在23.2.0之后具有大空白空间的RecyclerView项目

时间:2016-03-01 16:28:03

标签: android android-recyclerview android-support-library

在我的RecyclerView中更新为 v23.2.0 后,我的项目之间有大量空的垂直空间。

我的项目布局非常简单:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
       android:layout_width="match_parent"
       android:layout_height="match_parent"                                    
       android:orientation="vertical" >

5 个答案:

答案 0 :(得分:125)

根据doc

  

发布 23.2.0 时,LayoutManager API有一项令人兴奋的新功能:自动测量
  这允许RecyclerView根据其内容的大小自行调整大小。这意味着现在可以使用以前不可用的方案,例如使用 WRAP_CONTENT 作为RecyclerView的维度。
  您会发现所有内置的LayoutManagers现在都支持自动测量。

由于此更改,请务必仔细检查项目视图的布局参数以前忽略的布局参数(例如 MATCH_PARENT 在滚动方向上)现在将被完全尊重

在您的项目布局中,您必须更改:

android:layout_height="match_parent"

android:layout_height="wrap_content" 

答案 1 :(得分:13)

您必须制作Recyclerview和项目布局高度包装内容。

答案 2 :(得分:6)

在我的情况下,我已经进行了新的wrap_content更改,但在onMove或onSwipe期间仍然存在间隙。我通过添加此代码解决了这个问题:

mRecyclerView.getLayoutManager().setMeasurementCacheEnabled(false);

答案 3 :(得分:3)

这对我有用。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto">

<android.support.v7.widget.CardView
    android:layout_width="fill_parent"
    android:layout_height="100dp"
    android:elevation="7dp"
    app:cardCornerRadius="7dp"
    app:cardMaxElevation="7dp"
    app:contentPadding="7dp"
    android:layout_margin="5dp"
    >

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">
    <TextView
        android:id="@+id/tv_allfeedbacks_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:layout_marginLeft="5dp"
        android:textSize="14dp"
        android:textStyle="bold"
        />
    <TextView
        android:id="@+id/tv_allfeedback_date"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_marginRight="5dp"
        android:layout_marginTop="5dp"
        />
    <TextView
        android:id="@+id/tv_allfeedbacks_comment"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/tv_allfeedbacks_title"
        android:layout_marginTop="5dp"
        android:layout_marginLeft="5dp"
        />
        <TextView
            android:id="@+id/tv_allfeedbacks_username"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_margin="5dp"
            />
        <RatingBar
            android:id="@+id/ratingbar_allfeedbacks"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true"
            android:numStars="5"
            android:layout_margin="5dp"
            style="?attr/ratingBarStyleSmall"
            />
        </RelativeLayout>

</android.support.v7.widget.CardView>

答案 4 :(得分:1)

给定解决方案均无效。

设置layout_height = "wrap_content"也不起作用。

我的列表设计的父级布局是 ConstraintLayout ,这就是问题所在(不知道是什么)。但是将父级布局更改为 RelativeLayout 后,一切正常。