添加背景到按钮中断大小调整

时间:2016-07-14 03:23:49

标签: android button layout imagebutton

我有一个图标我想缩小到48dp并用作按钮(没有背景)。但是,添加android:background属性(使背景透明)似乎打破了我应用于按钮的大小,它以完整大小显示:

enter image description here

所需尺寸但背景难看:

<ImageButton
    android:id="@+id/composition_send"
    android:layout_width="48dp"
    android:layout_height="match_parent"
    android:layout_alignParentEnd="true"
    android:scaleType="fitCenter"
    android:src="@drawable/ic_send_black_48dp"/>

完整(错误)大小,但没有背景(需要):

<ImageButton
    ...
    android:background="?android:selectableItemBackground"/>

为什么添加一行会破坏大小调整?

3 个答案:

答案 0 :(得分:0)

如果您未设置Imagebutton的背景属性,Imagebutton将使用Android的默认Imagebutton背景。此背景包含填充,因此您的图像更小 因此,当您通过不包含填充的颜色或资源设置Imagebutton的背景时,您的图像看起来会更大

您可以在

中找到Imagebutton和另一个View的默认背景
  

.. \的Android \ SDK \平台\机器人-23 \数据\ RES \绘制\

(这里的某些资源不公开)

例如
如果使用API​​ 23编译项目,则ImageButton的默认背景为btn_default_material

    <ImageButton
        ...
        android:background="@android:drawable/btn_default_material"
        android:src="@drawable/ic_send_black_48dp"/>

    <ImageButton
        ...
        android:src="@drawable/ic_send_black_48dp"/>

因此,您设置android:background="@android:drawable/btn_default_material"或不使用背景属性,2 ImageButton看起来相同(注意:btn_default_material不公开使用)

希望这个帮助

答案 1 :(得分:0)

尝试添加

        android:src="@drawable/ic_send_black_48dp
        android:backgroundTint="#0000"

到ImageButton,它会使背景透明,然后你可以在上面设置图像。

答案 2 :(得分:0)

如果您不想在图像按钮中使用丑陋的背景,那么您可以使用imageview作为按钮并在其上设置onClickListener。它的行为就像一个按钮。 这个Link会对您有所帮助。