编程语言
首页 > 编程语言> > java – Android ImageView – 填充宽度和调整大小以保持宽高比

java – Android ImageView – 填充宽度和调整大小以保持宽高比

作者:互联网

我有一个View View,我在ListView中使用.

此RowView由左侧的ImageView和水平LinearLayout右侧的TextView组成,其中图像占40%的空间,文本占剩余的60%.

我希望布局以下列方式处理ImageView中图像的大小调整:

>水平拉伸图像,使其占据LinearLayout的40%
>垂直调整ImageView的大小以保持原始高宽比

这是我对布局的方法:

protected class RowView extends LinearLayout {
public ImageView iv = null;
public TextView tv = null;

private LinearLayout.LayoutParams ivlp = null;
private LinearLayout.LayoutParams tvlp = null;

public RowView(Context ct) {
    super(ct);

    setOrientation(LinearLayout.HORIZONTAL);

    // Create the views
    iv = new ImageView(ct);
    ivlp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT, 0.4f);
    iv.setLayoutParams(ivlp);
    iv.setAdjustViewBounds(true);
    iv.setScaleType(ScaleType.FIT_XY);

    tv = new TextView(ct);
    tvlp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, 0.4f);
    tv.setLayoutParams(tvlp);
    tv.setGravity(Gravity.CENTER_VERTICAL | Gravity.RIGHT);

    // Add the views
    addView(iv);
    addView(tv);
}

}

我得到的结果是这样的:

据我所知:

> MATCH_PARENT正确地强制图像水平拉伸以填充40%的空间
> ImageView.setAdjustViewBounds(true)应该允许ImageView的任何大小调整,这是我想要的.问题是没有ImageView.ScaleType似乎做我想要的
> ImageView.ScaleType(ScaleType.FIT_XY)不是我想要的,因为它不保持纵横比.但是所有其他的,似乎没有拉伸ImageView的高度(这使得ImageView.setAdjustViewBounds(true)几乎没用).

我究竟做错了什么?这个简单的事情如此困难似乎是错的?

或者我是否真的必须努力扩展ImageView和Overriding onMeasure以强制调整大小和宽高比?

或者Matrix有一个聪明的技巧来完成工作吗?

解决方法:

我相信这就是你要找的东西:

<ImageView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/myImage"
    android:scaleType="fitCenter"
    android:adjustViewBounds="true" />

标签:java,android,aspect-ratio,imageview,resize
来源: https://codeday.me/bug/20190629/1329683.html