我正在使用com.google.android.material:material
库的最新版本(即1.1.0-alpha03
),并且我为MaterialButton
定义了一个图标,没有文本,如下所示:
我希望将MaterialButton
渲染为一个正方形,图标居中,但是MaterialButton
的渲染如下:
如果我将iconGravity
的值更改为"textStart"
,则MaterialButton
的呈现方式如下:
这对图标的位置略有改善,但是图标仍然偏离中心一点。如果将insetLeft
,insetRight
,insetTop
和insetBottom
的值更改为0dp
,则MaterialButton
的呈现方式如下:
这是对按钮形状的改进,但是图标仍然偏离中心。
有人知道我还可以做些什么来将图标放在MaterialButton
中吗?
答案 0 :(得分:17)
将iconGravity更改为textStart,将iconPadding更改为0dp
app:iconPadding="0dp"
android:padding="0dp"
app:iconGravity="textStart"
答案 1 :(得分:7)
找到了。我缺少的属性是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
,如下所示:
答案 2 :(得分:1)
将此样式添加到按钮
<Button style="@style/Widget.App.Button.IconOnly"/>
然后在res/values/styles.xml
中添加以下内容
<style name="Widget.App.Button.IconOnly" parent="Widget.MaterialComponents.Button">
<item name="iconPadding">0dp</item>
<item name="android:insetTop">0dp</item>
<item name="android:insetBottom">0dp</item>
<item name="android:paddingLeft">12dp</item>
<item name="android:paddingRight">12dp</item>
<item name="android:minWidth">48dp</item>
<item name="android:minHeight">48dp</item>
</style>
答案 3 :(得分:0)
您的按钮上还有Icon
版本的材料样式。对于您正在使用的填充按钮,可以将样式设置为Widget.MaterialComponents.Button.Icon
。