Adjust icon size of Floating action button (fab)
C

14

219

Floating button The new floating action button should be 56dp x 56dp and the icon inside it should be 24dp x 24dp. So the space between icon and button should be 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>

And this is the result I get:
Floating button result
I used the icon from \material-design-icons-1.0.0\content\drawable-hdpi\ic_add_black_48dp.png
https://github.com/google/material-design-icons/releases/tag/1.0.1

How to make the size of the icon inside the button be exactly as described in guidelines ?

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

Capitalistic answered 15/12, 2014 at 12:28 Comment(1)
Possible duplicate of : https://mcmap.net/q/120664/-android-floating-button-icon-is-not-centredChadburn
T
198

As your content is 24dp x 24dp you should use 24dp icon. And then set android:scaleType="center" in your ImageButton to avoid auto resize.

Tangerine answered 15/12, 2014 at 12:41 Comment(9)
Can you explain or drop a link to some site, why for example in drawable-hdpi folder there are _18dp.png, _24dp.png, _36dp.png, _48dp.png images.Capitalistic
I don't understand your question, there are 18dp, 24dp, 36dp and 48dp for different size images.Worrell
Do you remember the old Android_Design_Icons which had only one variant of the icon in hdpi folder which was 48px x 48px. Why now in hdpi folder there are 4 different resolution for the same icon i.e. 27px x 27 px, 36px x 36px, 54px x 54px, 72px x 72px ?Capitalistic
yep I remember but I can't explain why these new icons are in multiple sizes... (to get them super clean when they are used ?). Hope someone has an answer to thatWorrell
Is android:scaleType applicable to an ImageButton because I don't get any suggestions when I use CTRL+SPACE. Without that tag it gives the same effect. Maybe for ImageButton android:scaleType is set by default to centerCapitalistic
ImageButton is a subclass of ImageView so you have a scaleType attribut and default scaleType is ScaleType.FIT_CENTERWorrell
Then I will not change it. I think the default value ScaleType.FIT_CENTER is safer to use for an ImageButton.Capitalistic
android:scaleType="center" android:scaleType="centerCrop" are settings work on almost all viewsHyacinthie
No longer works with com.android.support:support-v4:28.0.0-rc01Busk
I
197

Try to use app:maxImageSize="56dp" instead of the above answers after you update your support library to v28.0.0

Is answered 3/9, 2018 at 7:28 Comment(4)
Any ways, you don't get this in 28.0.0 version, you will get it in androidx.Taddeusz
I haven't switched to AndroidX, this is what I am using: api 'com.android.support:design:28.0.0'Is
This worked for me but I would like more information to understand why defining a maxIconSize changes the icon size.Benempt
Can you please tell me how to set maxImageSize programmatically? I couldn't find the answer.Remunerative
G
133

There are three key XML attributes for custom FABs:

  • app:fabSize: Either "mini" (40dp), "normal"(56dp)(default) or "auto"
  • app:fabCustomSize: This will decide the overall FAB size.
  • app:maxImageSize: This will decide the icon size.

Example:

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

The FAB padding (the space between the icon and the background circle, aka ripple) is calculated implicitly by:

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

Note that the margins of the fab can be set by the usual android:margin xml tag properties.

Geanticline answered 28/4, 2019 at 21:18 Comment(3)
Can you please tell me how to set maxImageSize programmatically? I couldn't find the answer.Remunerative
@Remunerative According to the API documentation, there are no public methods to set the FAB's "maxImageSize". However, there is a "setCustomSize" method... See if it works out for you. In the worst case, you need to create a new FAB view and append it into your layout... since there is no way to dynamically set attributes in XML without the view's setter method.Geanticline
maxImageSize worked for me for showing full drawable in floating button.Demetrademetre
S
125

Make this entry in dimens

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

Here 36dp is icon size on floating point button. This will set 36dp size for all icons for floating action button.

Updates As Per Comments

If you want to set icon size to particular Floating Action Button just go with Floating action button attributes like app:fabSize="normal" and android:scaleType="center".

  <!--app:fabSize decides size of floating action button You can use normal, auto or mini as per need-->
  app:fabSize="normal" 

  <!--android:scaleType decides how the icon drawable will be scaled on Floating action button. You can use center(to show scr image as original), fitXY, centerCrop, fitCenter, fitEnd, fitStart, centerInside.-->
  android:scaleType="center"
Seraph answered 24/6, 2016 at 5:28 Comment(3)
Yes. It doesn't work with github.com/Clans/FloatingActionButton. It works when you are using androids FloatingActionButtonSeraph
Yeaaaah but I don't Want to do it across the app!Busk
@Busk I you have to use fabSize and scaleType attributes if want to apply for single floating action button. I have updated my answer.Seraph
D
31

The design guidelines defines two sizes and unless there is a strong reason to deviate from using either, the size can be controlled with the fabSize XML attribute of the FloatingActionButton component.

Consider specifying using either app:fabSize="normal" or app:fabSize="mini", e.g.:

<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" />
Declinate answered 10/8, 2016 at 1:12 Comment(0)
A
18
<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"/>

With the background you provided it results in below button on my device (Nexus 7 2012)

enter image description here

Looks good to me.

Asparagus answered 15/12, 2014 at 12:33 Comment(1)
I set the padding but it does nothing. And the right padding would be 16 dp not 32dpCapitalistic
R
16

What's your goal?

If set icon image size to bigger one:

  1. Make sure to have a bigger image size than your target size (so you can set max image size for your icon)

  2. My target icon image size is 84dp & fab size is 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" />
    
Reprobate answered 12/10, 2018 at 10:37 Comment(0)
F
11

If you are using androidx 1.0.0 and are using a custom fab size, you will have to specify the custom size using

app:fabCustomSize="your custom size in dp"

By deafult the size is 56dp and there is another variation that is the small sized fab which is 40dp, if you are using anything you will have to specify it for the padding to be calculated correctly

Fidellas answered 23/10, 2018 at 11:20 Comment(1)
This is exactly what I was looking for! You don't even need to set layout_width and layout_height. It just works. This is also available on com.android.support:design:28.0.0Nordin
A
6

You can play with the following settings of FloatingActionButton : android:scaleType and app:maxImageSize. As for me, I've got a desirable result if android:scaleType="centerInside" and app:maxImageSize="56dp".

Aida answered 24/2, 2019 at 17:44 Comment(0)
F
5

As FAB is like ImageView so You can use scaleType attribute to change the icon size likewise ImageView. Default scaleType for a FAB is fitCenter. You can use center and centerInside to make icon small and large respectively.

All values for scaleType attribute are - center, centerCrop, centerInside, fitCenter, fitEnd, fitStart, fitXY and matrix.

See https://developer.android.com/reference/android/widget/ImageView.ScaleType.html for more details.

Firebrick answered 24/8, 2016 at 6:14 Comment(0)
T
3

off of @IRadha's answer in vector drawable setting android:height="_dp" and setting the scale type to android:scaleType="center" sets the drawable to whatever size was set

Teodoor answered 25/2, 2018 at 21:52 Comment(0)
E
2

Using ExtendedFloatingActionButton, this solved the issue for me:

app:iconSize="<x>dp"

I've tried iconPadding or fabCustomSize but I haven't seem any changes

Evelinevelina answered 10/3, 2021 at 10:41 Comment(1)
Thanks. Took a while to find this answer for extended FABEdie
K
0

You can easily set your FAB icon size by using,

final FloatingActionButton button = new FloatingActionButton(context);

button.setCustomSize(50);

Katlaps answered 26/4, 2021 at 17:16 Comment(0)
R
-1
    android:id="@+id/floatingActionButton3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:clickable="true"
    app:backgroundTint="#FBFAFA"
    app:fabCustomSize="70dp"
    app:fabSize="mini"
    app:maxImageSize="84dp"
    app:srcCompat="@drawable/resim"
    app:tint="#E81C1C"
    tools:layout_editor_absoluteX="325dp"
    tools:layout_editor_absoluteY="517dp" />

I Handled It This Way

Rumsey answered 30/9, 2021 at 21:33 Comment(2)
id and srcCompat I prefer that you adjust these parts according to yourself.Rumsey
Your answer could be improved with additional supporting information. Please edit to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers in the help center.Holliman

© 2022 - 2024 — McMap. All rights reserved.