为什么使用Glide加载新图像后ImageView不能重新调整大小?

时间:2019-05-22 12:32:05

标签: android imageview android-glide

当我尝试使用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>

1 个答案:

答案 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总是在加载图像后才具有正确的大小。