Android:带有centerCrop比例的ImageView在4.1.1和4.4.4(Android SDK)上的行为不一样

时间:2016-12-17 18:38:15

标签: android imageview android-glide

我使用此布局在我的RecyclerView中显示图片:

<ImageView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/picture"
    android:layout_width="match_parent"
    android:layout_height="match_parent"    
    android:scaleType="centerCrop" />

我用Glide这样加载图片:

Glide.with(context)
    .load(my_url)
    .skipMemoryCache(true)
    .placeholder(R.drawable.default_medium_wide_picture)
    .crossFade()
    .into(contentHolder.mImageView);

ImageView的高度是根据宽度屏幕在创建视图期间计算的:

DisplayMetrics metrics = MyApplication.getInstance().getResources().getDisplayMetrics();
imageView.getLayoutParams().height = Math.round(metrics.widthPixels * Defines.IMAGE_HEIGHT_RATIO);

4.4.4 Android版本的结果非常完美:

enter image description here

但是在4.1.1 Android版本上,预期的结果很糟糕:

enter image description here

先谢谢你们的帮助!

1 个答案:

答案 0 :(得分:0)

您可以使用Glide的centerCrop并根据宽度移除高度计算。

Glide.with(context)
    .load(my_url)
    .skipMemoryCache(true)
    .placeholder(R.drawable.default_medium_wide_picture)
    .crossFade()
    .centerCrop() // Use centerCrop here
    .into(contentHolder.mImageView);