如何根据其源图像的比例得到一个具有固定高度且只有所需宽度的ImageButton
?
我尝试了以下内容:
<ImageButton
android:layout_width="wrap_content"
android:layout_height="8pt"
android:minWidth="0pt"
android:scaleType="fitCenter"
android:adjustViewBounds="true"
android:src="@drawable/list_download"
android:background="@android:color/black"
android:padding="0pt"/>
我将背景设置为黑色只是为了确切地看到它的边界,here就是结果。
我已经看到一些建议使用负填充的解决方案,但它不是一个优雅的解决方案。应该有一个更好的。
我在ImageView
上尝试了类似的配置,但它也有额外的填充。所以这不是ImageButton
特定问题(即它与this九补丁问题无关。)
编辑:如果我将scaleType
从fitCenter
更改为fitStart
,那么结果就像this。所以有某种最小宽度。
答案 0 :(得分:1)
这是因为你设定了有限的高度。这限制了图像高度,但是当Android计算内容的宽度(原始未重新图像)时,它会更宽。
您将获得没有黑色&#34;填充&#34;的图像。如果你也使用wrap_content作为高度。
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minWidth="0pt"
android:scaleType="fitCenter"
android:adjustViewBounds="true"
android:src="@drawable/list_download"
android:background="@android:color/black"
android:padding="0pt"/>
因此,如果您希望图片为特定尺寸,可以将其在可绘制文件夹中调整为您想要的尺寸。
答案 1 :(得分:0)
你可以把它放在这样的框架中:
<FrameLayout
android:layout_width="wrap_content"
android:background="@android:color/black"
android:layout_height="wrap_content">
<ImageView
android:src="@drawable/list_download"
android:scaleType="fitCenter"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_width="8dp"/>
</FrameLayout>
像这样玩它会更容易
答案 2 :(得分:0)
你只需要使用 android:scaleType="fitXY" 并设置 padding 0dp。
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="fitXY"
android:padding="0dp"/>