当我尝试使用Glide库将新图像加载到ImageView中时,如果先前的图像较小而新的图像较大,则ImageView会保持其大小与先前的(较小的)图像匹配。
我尝试过Picasso和Glide库,问题是相同的。
我希望ImageView的大小与新加载的图像的大小匹配。
Glide.with(getApplicationContext())
.load(user.getImageURL())
.thumbnail(Glide.with(getApplicationContext()).load(R.drawable.loading))
.listener(new RequestListener<Drawable>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
return false;
}
@Override
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
profilePicture.setBackground(null);
return false;
}
})
.into(profilePicture);
<android.support.v7.widget.CardView
android:id="@+id/cardView"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/profilePicture"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:adjustViewBounds="false"
android:background="@drawable/loadingsmaller"
android:cropToPadding="false"
android:scaleType="centerInside"
android:visibility="visible" />
</android.support.v7.widget.CardView>
答案 0 :(得分:0)
以防有人仍在寻找解决方案。 this帮助了我。 我的自定义ImageView中的图像加载链为:
GlideApp.with(context)
.load(viewData.uri)
.thumbnail(GlideApp.with(context).load(viewData.placeholderRes).centerCrop())
.error(viewData.placeholderRes)
.apply(
RequestOptions().diskCacheStrategy(DiskCacheStrategy.RESOURCE)
)
.into(this)
我创建了类常量:
private val target = object : CustomViewTarget<ImageView, Bitmap>(this) {
override fun onLoadFailed(errorDrawable: Drawable?) {
}
override fun onResourceCleared(placeholder: Drawable?) {
}
override fun onResourceReady(resource: Bitmap, transition: Transition<in Bitmap>?) {
setImageBitmap(resource)
}
}
并更改了链条,如下所示:
GlideApp
.with(context)
.asBitmap()
.load(viewData.uri)
.thumbnail(
GlideApp
.with(context)
.asBitmap()
.load(viewData.placeholderRes)
.centerCrop()
)
.error(viewData.placeholderRes)
.apply(
RequestOptions().diskCacheStrategy(DiskCacheStrategy.RESOURCE)
)
从现在开始,我的ImageView总是在加载图像后才具有正确的大小。