在Android中保持ImageView的比例

时间:2015-04-02 13:55:53

标签: android android-layout imageview android-relativelayout

我必须设置ImageView的背景图像,然后设置此ImageView的imageSource。

所以我做的是用setBackgroundImage()设置图像视图背景。 我也定了 adjustViewBounds = truescaleType = "fitCenter",以及height = 55dpwidth = wrap content

所以我预计第一次(当我只设置背景时)有这个场景 - 视图将具有相同的比例并且将适合最小 - 宽度或高度(当然,如果高度大于55dp,它将缩放)。但结果是图像被缩放(当图像应该大于55dp时,即高度被缩放)。图像位于RelativeLayout中。不幸的是,我无法发布整个代码。

提前致谢。

1 个答案:

答案 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);
}