当物品的高度为wrap_content时,RecyclerView会在向上滚动时直接跳到顶部

时间:2017-07-12 17:23:16

标签: android android-layout android-recyclerview

以下是xml文件

Fragment Recyclerview

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/list_photos"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".ui.photos.PhotosFragment"
        tools:listItem="@layout/card_photo">

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

上述Recyclerview

中每个项目的布局
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/card_photo"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <ImageView
        android:id="@+id/photo"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:adjustViewBounds="true"
        android:scaleType="fitCenter"
        tools:src="@drawable/placeholder_photo_item" />

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

它看起来像这样:

item_height_wrap_content

正如您所看到的,滚动时它不会快速平滑地加载。它停止滚动某些项目。
此外,当我向上滚动时,它会直接跳转到顶部项目。

下面是RecyclerView的完美平滑和快速滚动效果,我可以通过制作Recyclerview项目来实现这里(CardView })身高到"match_parent"

item_height_match_parent

但这不是我希望列表看起来像的样子。该列表应具有可变长度的图像,它们之间没有空格。

1 个答案:

答案 0 :(得分:2)

我正在使用Glide加载图片,并通过Glide添加占位符来修复它:

GlideApp.with(mContext)
            .load(url)
            .placeholder(R.color.placeholder)
            .into(holder.photo);

现在RecyclerView滚动顺畅,不会跳到上滚动的第一项。

虽然它已经修复但我真的不知道为什么RecyclerView会以这种方式行事。