- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我试图将 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 :
但是我不知道EditText
的确切高度,所以我不能在这里为ImageView
指定它。
当指定 ImageView
的高度以填充其父级(以匹配 ``EditText` 高度)时:
android:layout_height="fill_parent"
然后我在图像和文本输入之间得到意想不到的额外边距:
实际上,在这种情况下,ImageView
宽度等于未缩放的图像宽度,而图像已缩放。
如果我将layout_height
指定为48dp
并将adjustViewBounds
设置为false
,则类似于下图:
android:layout_height="48dp"
android:adjustViewBounds="false"
因此,这里的问题是:如何正确定义布局以缩放图像以匹配编辑条目高度,同时将 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/
我是一名优秀的程序员,十分优秀!