gpt4 book ai didi

java - Android ImageView - 填充宽度和调整大小以保持纵横比

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:04:35 25 4
gpt4 key购买 nike

我在 ListView 中使用了一行 View

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

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

  1. 水平拉伸(stretch)图像,使其填满 40% 的 LinearLayout
  2. 垂直调整 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);
}

我得到的结果是这样的:

enter image description here

据我了解:

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

我做错了什么?这么简单的事情竟然这么难,这似乎是错误的?

或者我真的必须努力扩展 ImageView 并重写 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 ImageView - 填充宽度和调整大小以保持纵横比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14133286/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com