美文网首页android之路
Android 设置 ImageView 高度固定,宽度自适应

Android 设置 ImageView 高度固定,宽度自适应

作者: innovatorCL | 来源:发表于2018-02-04 18:23 被阅读118次

    1. 需求背景

    当很多时候,设计为了界面美观,都会设死图片的宽度或者高度,但是服务器返回的图片参差不齐,这时候就需要我们手动设置 ImageView 宽高了,通过 ImageView 的 android:adjustViewBounds="true" 属性,我们能让设置让图片自适应显示。

    2. 实现方式

    • 在 XML 中设置 ImageView 的相关配置
    <ImageView android:id="@+id/test_image"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:scaleType="fitXY"
    android:adjustViewBounds="true"
    android:src="#EEEEEE" />
    

    注意:android:adjustViewBounds="true" 属性只有在设置了最大高度和最大宽度后才会起作用,所以我们要在代码里面设置最大的宽高。

    • 代码里面设置

    show my code

    if(0 == screenWidth){
        // 获取屏幕的宽度,以 dp 为单位返回
        screenWidth = CommonUtils.getScreenWidthDp(mContext);
      }
    
    // 此处设置高度是固定的,是 (屏幕 - 40dp) * 0.75
    int fixedHeight = CommonUtils.dip2px(mContext,(float) ((screenWidth - 40) * 0.75));
    ViewGroup.LayoutParams lp = holder.contentImage.getLayoutParams();
    lp.width = ViewGroup.LayoutParams.WRAP_CONTENT;
    lp.height = fixedHeight;
    contentImage.setLayoutParams(lp);
    
    contentImage.setMaxWidth(CommonUtils.dip2px(mContext, screenWidth - 40));
    contentImage.setMaxHeight(fixedHeight);
    

    接下来就可以用 Glide 来加载显示图片啦!!!

    Glide.with(mContext).load(url).crossFade().priority(Priority.IMMEDIATE)//.thumbnail(0.1f)
                .diskCacheStrategy(DiskCacheStrategy.SOURCE)
                .placeholder(new ColorDrawable(mContext.getResources().getColor(R.color.clicked)))
                .into(contentImage);
    

    效果图

    效果.jpg

    相关文章

      网友评论

        本文标题:Android 设置 ImageView 高度固定,宽度自适应

        本文链接:https://www.haomeiwen.com/subject/zezmzxtx.html