删除ImageButton的填充

时间:2017-01-30 21:15:53

标签: android android-layout padding imagebutton

如何根据其源图像的比例得到一个具有固定高度且只有所需宽度的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九补丁问题无关。)

编辑:如果我将scaleTypefitCenter更改为fitStart,那么结果就像this。所以有某种最小宽度。

3 个答案:

答案 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"/>