我必须设置ImageView
的背景图像,然后设置此ImageView的imageSource。
所以我做的是用setBackgroundImage()设置图像视图背景。
我也定了
adjustViewBounds = true
和scaleType = "fitCenter"
,以及height = 55dp
和width = wrap content
。
所以我预计第一次(当我只设置背景时)有这个场景 - 视图将具有相同的比例并且将适合最小 - 宽度或高度(当然,如果高度大于55dp,它将缩放)。但结果是图像被缩放(当图像应该大于55dp时,即高度被缩放)。图像位于RelativeLayout中。不幸的是,我无法发布整个代码。
提前致谢。
答案 0 :(得分:1)
你必须继承ImageView
并覆盖onLayout()
以保持宽度/高度比例如下:
@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
double ratio = ...
int width = right - left;
int height = ratio * width;
ViewGroup.LayoutParams params = this.getLayoutParams();
params.height = height;
params.width = width;
this.setLayoutParams(params);
this.setMeasuredDimension(width, height);
super.onLayout(changed, left, top, right, top + height);
}