新的浮动动作按钮应该是56dp x 56dp,图标应该是24dp x 24dp。所以图标和按钮之间的间距应该是16dp。

<ImageButton
    android:id="@+id/fab_add"
    android:layout_width="56dp"
    android:layout_height="56dp"
    android:layout_gravity="bottom|right"
    android:layout_marginBottom="16dp"
    android:layout_marginRight="16dp"
    android:background="@drawable/ripple_oval"
    android:elevation="8dp"
    android:src="@drawable/ic_add_black_48dp" />

ripple_oval.xml

<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="?android:colorControlHighlight">
    <item>
        <shape android:shape="oval">
            <solid android:color="?android:colorAccent" />
        </shape>
    </item>
</ripple>

这是我得到的结果: 我使用了\material-design-icons-1.0.0\content\draw -hdpi\ic_add_black_48dp.png中的图标 https://github.com/google/material-design-icons/releases/tag/1.0.1

如何使按钮内的图标的大小完全按照指导方针所述?

http://www.google.com/design/spec/components/buttons.html#buttons-floating-action-button


当前回答

<ImageButton
        android:background="@drawable/action_button_bg"
        android:layout_width="56dp"
        android:layout_height="56dp"
        android:padding="16dp"
        android:src="@drawable/ic_add_black_48dp"
        android:scaleType="fitXY"
        android:elevation="8dp"/>

在你提供的背景下,它会在我的设备上出现以下按钮(Nexus 7 2012)

我觉得不错。

其他回答

你的目标是什么?

如果将图标图像大小设置为较大:

确保图像大小大于你的目标大小(这样你就可以为你的图标设置最大图像大小) 我的目标图标图像大小是84dp, fab大小是112dp: < android.support.design.widget.FloatingActionButton android: layout_width = " wrap_content " android: layout_height = " wrap_content " android: layout_gravity = "中心" Android:src= <image here> 应用:fabCustomSize = " 112 dp” 应用:fabSize =“自动” 应用:maxImageSize = " 84 dp " / >

<ImageButton
        android:background="@drawable/action_button_bg"
        android:layout_width="56dp"
        android:layout_height="56dp"
        android:padding="16dp"
        android:src="@drawable/ic_add_black_48dp"
        android:scaleType="fitXY"
        android:elevation="8dp"/>

在你提供的背景下,它会在我的设备上出现以下按钮(Nexus 7 2012)

我觉得不错。

在你更新你的支持库到v28.0.0后,尝试使用app:maxImageSize="56dp"来代替上面的答案

定制fab有三个关键的XML属性:

app:fabSize:“mini”(40dp),“normal”(56dp)(默认)或“auto” app:fabCustomSize:这将决定整个FAB的大小。 app:maxImageSize:这将决定图标大小。


例子:

app:fabCustomSize="64dp" 
app:maxImageSize="32dp"

FAB填充(图标和背景圆之间的空间,又名波纹)隐式计算:

4-edge padding = (fabCustomSize - maxImageSize) / 2.0 = 16

注意,fab的页边距可以通过通常的android:margin xml标签属性设置。

如果您正在使用androidx 1.0.0并且正在使用自定义fab大小,则必须使用

app:fabCustomSize="your custom size in dp"

尺寸是56dp,还有另一种变化是小型fab,它是40dp,如果你使用任何东西,你必须指定它,以便正确计算填充