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