gpt4 book ai didi

android - ImageView:adjustViewBounds 不适用于 layout_height ="fill_parent"?

转载 作者:可可西里 更新时间:2023-11-01 18:47:43 26 4
gpt4 key购买 nike

我试图将 EditText 与左侧的 ImageView 放在单行中。但是我无法正确缩放图像以匹配文本输入的高度。

布局很简单:

    <LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:adjustViewBounds="true"
android:scaleType="fitStart"
android:background="#f00"
android:src="@drawable/icon" />
<EditText
android:id="@+id/text"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>

(我用红色突出显示图像背景以查看ImageView分配的实际空间)


如果我为 ImageView 指定确切的高度:

            android:layout_height="48dp"

然后我得到了我需要的最接近的 View : enter image description here

但是我不知道EditText的确切高度,所以我不能在这里为ImageView指定它。


当指定 ImageView 的高度以填充其父级(以匹配 ``EditText` 高度)时:

            android:layout_height="fill_parent"

然后我在图像和文本输入之间得到意想不到的额外边距: enter image description here

实际上,在这种情况下,ImageView 宽度等于未缩放的图像宽度,而图像已缩放。


如果我将layout_height指定为48dp并将adjustViewBounds设置为false,则类似于下图:

            android:layout_height="48dp"
android:adjustViewBounds="false"

enter image description here


因此,这里的问题是:如何正确定义布局以缩放图像以匹配编辑条目高度,同时将 ImageView 的宽度缩小为缩放后的图像宽度?换句话说,如何摆脱这个额外的空间?

最佳答案

这是一个线性布局错误。如果您查看源代码中的 forceUniformHeight here .您可以看到,当 LinearLayout 设置为 wrap_content 时,要处理提供 match_parent 作为高度的 subview ,LinearLayout 假装具有绝对高度,重新计算子高度然后重新使用前一个测量过程中的子宽度。基本上你的图像正在计算不受约束的高度和宽度并获得默认宽度和高度,然后重新计算高度但被迫使用旧宽度。您将需要提供高度或覆盖一些 View onMeasures

关于android - ImageView:adjustViewBounds 不适用于 layout_height ="fill_parent"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5403970/

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