实现方法很简单,根据图片文件的宽度与ImageView的宽度比例关系算出ImageView的高度。
package com.etongwl.commonlibs.view;
import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.NinePatchDrawable;
import android.util.AttributeSet;
import android.view.ViewGroup;
import android.widget.ImageView;
/*
* @Override
public void setImageDrawable(final Drawable drawable) {
super.setImageDrawable(drawable);
if (drawable != null) {
post(new Runnable() {
@Override public void run() {
float mWidth = getWidth();
float pWidth = drawable.getBounds().width();
float pHeight = drawable.getBounds().height();
int mHeight = (int) ((mWidth / pWidth) * pHeight);
LayoutParams params = getLayoutParams();
params.height = mHeight;
params.width = (int) mWidth;
setLayoutParams(params);
}
});
}
}
首先, 如果drawable不为空, 则通过drawable.getBounds()去获取drawable边界的宽和高. 在根据ImageView的宽与drawable的宽的比例去计算高度, 最后通过LayoutParams设置ImageView的高度
*
*/
/*
android:id="@+id/detail_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:la