我正在使用最新版本的com.google.android.material:material库(即1.1.0-alpha03),并且我定义了一个带图标且没有文本的MaterialButton,如下所示:

我希望将MaterialButton渲染为一个正方形,图标居中,但是MaterialButton渲染如下:

android - 如何在没有文本的MaterialButton中将图标居中?-LMLPHP

如果我将iconGravity的值更改为"textStart",则MaterialButton的呈现方式如下:

android - 如何在没有文本的MaterialButton中将图标居中?-LMLPHP

这对图标的位置略有改善,但是图标仍然偏离中心一点。如果我将insetLeftinsetRightinsetTopinsetBottom值更改为0dp,则MaterialButton呈现如下:

android - 如何在没有文本的MaterialButton中将图标居中?-LMLPHP

这是对按钮形状的改进,但是图标仍然偏离中心一点。

有人知道我还有其他方法可以将图标放在MaterialButton中吗?

最佳答案

找到了。我缺少的属性是app:iconPadding="0dp"

因此,根据我的实验,创建方形MaterialButton(具有居中图标且没有文本)所需的最小属性如下:

<com.google.android.material.button.MaterialButton
    android:layout_width="52dp"
    android:layout_height="52dp"
    android:insetLeft="0dp"
    android:insetTop="0dp"
    android:insetRight="0dp"
    android:insetBottom="0dp"
    app:icon="@drawable/icon_next"
    app:iconGravity="textStart"
    app:iconPadding="0dp" />

这些属性产生一个MaterialButton,如下所示:

android - 如何在没有文本的MaterialButton中将图标居中?-LMLPHP

10-06 03:38