Android RecyclerView - 很长的图像在使用 space 时不显示/变黑

Android RecyclerView - very long images not showing / blacked out while still using the space

这是 RecyclerView 项目中的图像:

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

        <ImageView
            android:id="@+id/MemeImage"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_alignParentStart="true"
            android:adjustViewBounds="true"
            android:scaleType="fitCenter"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:srcCompat="@android:drawable/gallery_thumb" />

        <ProgressBar
            android:id="@+id/picLoadIcon"
            style="?android:attr/progressBarStyle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true" />

    </RelativeLayout>

当图像比显示器的高度长 2 倍时,图像不显示,它会变黑,同时仍在使用 space。

这是我加载它们的方式:

        holder.picContainer.layoutParams.height = endHeightImage

        holder.image.setMarginExtensionFunction(0, 0, 0, -cutOff)

        Glide
            .with(context)
            .load(fileUrl)
            .listener(object : RequestListener<Drawable> {
                override fun onLoadFailed(
                    e: GlideException?,
                    model: Any?,
                    target: Target<Drawable>?,
                    isFirstResource: Boolean
                ): Boolean {
                    return false
                }

                override fun onResourceReady(
                    resource: Drawable?,
                    model: Any?,
                    target: Target<Drawable>?,
                    dataSource: DataSource?,
                    isFirstResource: Boolean
                ): Boolean {
                    holder.picLoadIcon.visibility = View.GONE
                    return false
                }
            })
            .apply(glideOptions)
            .fitCenter()
            .into(holder.image)

负边距用于隐藏底部水印,以防万一。

您应该尝试设置 ImageView 的高度来包裹内容,而不是匹配相对布局。

  <ImageView
                android:id="@+id/MemeImage"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" .../>