Android 调整浮动操作按钮(fab)的图标大小

Android 调整浮动操作按钮(fab)的图标大小,android,material-design,floating-action-button,material-components-android,android-icons,Android,Material Design,Floating Action Button,Material Components Android,Android Icons,新的浮动操作按钮应为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="16d

新的浮动操作按钮应为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


这就是我得到的结果:

我使用了\material-design-icons-1.0.0\content\drawable hdpi\ic\u add\u black\u 48dp.png中的图标

如何使按钮内图标的大小与指南中所述的大小一致


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


我觉得不错

由于您的内容是24dp x 24dp,您应该使用。然后在ImageButton中设置android:scaleType=“center”,以避免自动调整大小。

在dimens中输入此项

<!--Floating action button-->
<dimen name="design_fab_image_size" tools:override="true">36dp</dimen>

36dp
这里36dp是浮点按钮上的图标大小。这将为浮动操作按钮的所有图标设置36dp大小

根据评论进行更新

如果您想将图标大小设置为特定的浮动操作按钮,只需使用浮动操作按钮属性,如app:fabSize=“normal”和android:scaleType=“center”


app:fabSize=“正常”
android:scaleType=“中心”

设计指南定义了两种尺寸,除非有充分理由不使用这两种尺寸,否则可以使用
FloatingActionButton
组件的
fabSize
XML属性来控制尺寸

考虑使用
app:fabSize=“normal”
app:fabSize=“mini”
进行指定,例如:

<android.support.design.widget.FloatingActionButton
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:src="@drawable/ic_done_white_24px"
   app:fabSize="mini" />

由于
FAB
类似于
ImageView
,因此您可以使用
scaleType
属性更改图标大小。
FAB
的默认
scaleType
fitCenter
。您可以使用
center
centerInside
分别使图标变小和变大

scaleType
属性的所有值都是-
center、centerCrop、centerInside、fitCenter、fitEnd、fitStart、fitXY
matrix

有关更多详细信息,请参见。

摘自@IRadha的答案 在矢量可绘制设置中
android:height=“\u dp”
并将刻度类型设置为android:scaleType=“center”
将drawable设置为设置的任何大小

在将支持库更新到v28.0.0后,尝试使用
app:maxImageSize=“56dp”
代替上述答案

您的目标是什么

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

  • 确保图像大小大于目标大小
    (以便您可以为图标设置最大图像大小)

  • 我的目标图标图像大小为84dp&晶圆厂大小为112dp

    <android.support.design.widget.FloatingActionButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:src= <image here>
        app:fabCustomSize="112dp"
        app:fabSize="auto"
        app:maxImageSize="84dp" />
    
    
    

  • 如果您使用的是androidx 1.0.0,并且使用的是自定义晶圆厂尺寸,则必须使用

    app:fabCustomSize="your custom size in dp"
    

    deafult的大小是56dp,还有另一个变体是小尺寸的fab,它是40dp,如果您使用任何东西,您必须指定它才能正确计算填充量。您可以使用以下浮动操作按钮设置:android:scaleType和app:maxImageSize。对我来说,如果android:scaleType=“centerInside”和app:maxImageSize=“56dp”,我会得到一个理想的结果。

    定制晶圆厂有三个关键的XML属性:

    • app:fabSize
      :可选择“迷你”(40dp)、“普通”(56dp)(默认)或“自动”
    • app:fabCustomSize
      :这将决定整个FAB的大小
    • app:maxImageSize
      :这将决定图标大小

    例如:

    app:fabCustomSize="64dp" 
    app:maxImageSize="32dp"
    
    晶圆填充(图标和背景圆之间的空间,也称为波纹)通过以下方式隐式计算

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


    请注意,可以通过常用的
    android:margin
    xml标记属性设置晶圆厂的边距。

    使用ExtendedFloatingActionButton,这为我解决了以下问题:

    app:iconSize="<x>dp"
    
    app:iconSize=“dp”
    

    我尝试了
    iconadding
    fabCustomSize
    ,但似乎没有任何变化

    您可以使用

    最终FloatingActionButton=新的FloatingActionButton(上下文)

    按钮。设置自定义大小(50)


    我设置了填充物,但它不起作用。正确的填充应该是16 dp而不是32 dp。你能解释一下或删除某个站点的链接吗,例如在drawable hdpi文件夹中,为什么有_18dp.png、_24dp.png、_36dp.png、_48dp.png图像。我不明白你的问题,有18dp、24dp、,36dp和48dp用于不同大小的图像。您还记得旧的Android_Design_图标吗?它在hdpi文件夹中只有一个图标的变体,即48px 48px。为什么现在在hdpi文件夹中,同一图标有4种不同的分辨率,即27px x 27 px、36px x 36px、54px x 54px、72px x 72px?ImageButton是ImageView的一个子类,因此您有一个scaleType属性,默认scaleType不再适用于com.android。支持:support-v4:28.0.0-rc01Yes。这对我不起作用。当您使用androids FloatingActionButtonYeaaaah时,它可以工作,但我不想在整个应用程序中这样做@StarWind0 I如果要应用单个浮动操作按钮,则必须使用fabSize和scaleType属性。我已经更新了我的答案。不管怎样,你在28.0.0版本中没有得到这个,你会在androidx中得到它。我没有切换到androidx,这是我正在使用的:api'com.android.support:design:28.0.0'这对我来说很有用,但我想了解更多信息,了解为什么定义
    maxIconSize
    会更改图标大小。你能告诉我如何通过编程设置maxImageSize吗?我找不到答案。这正是我要找的!您甚至不需要设置
    layout\u宽度app:fabCustomSize="64dp" 
    app:maxImageSize="32dp"
    
    4-edge padding = (fabCustomSize - maxImageSize) / 2.0 = 16
    
    app:iconSize="<x>dp"