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" .../>
这是 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" .../>