Home » Android » android – Floating Action Button Icon not centered inside

android – Floating Action Button Icon not centered inside

Posted by: admin June 15, 2020 Leave a comment

Questions:

I’m trying to use a FAB but the icon inside is placing at bottom right of the button:

FAB with icon not centered

This is the FAB definition in the xml:

<RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <com.google.android.material.floatingactionbutton.FloatingActionButton
            android:id="@+id/centerLocationButton"
            style="@style/Widget.MaterialComponents.FloatingActionButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentEnd="true"
            android:layout_alignParentRight="true"
            android:layout_margin="@dimen/pro_arriving_map_location_button_padding"
            android:src="@drawable/ic_my_location"
            app:backgroundTint="@color/white"
            app:fabSize="mini" />

    </RelativeLayout>

What am I doing wrong?

How to&Answers:

This seems to be a bug in the Design Support Library v28.0.0.

I could workarround this by setting the scaleType programmatically.

In your case in the Java/Kotlin Code:

centerLocationButton.setScaleType(ImageView.ScaleType.CENTER)

Answer:

My solution is app:fabCustomSize="56dp"

Answer:

In my situation run ok this solution
app:fab_icon="@drawable/btn_back_to_top_3x"
enter image description here
not
android:src="@drawable/btn_back_to_top_3x
enter image description here

And you can add
android:scaleY="1.X"
android:scaleX="1.X"

for additional variation

Answer:

Instead of android:src try app:srcCompat. Is FAB only thing you are using, because if it is (judging by the pic you posted), maybe you don’t need RelativeLayout as a parent, you can use android:layout_gravity="bottom|end"

Answer:

After updating to SDK 28, I’ve got the same problem. Changing the size, scaleType, layout_gravity, etc will return the same.

My current short-term solution is using the ImageButton.

Answer:

Try

android:width="wrap_content"
android:height="wrap_content"
app:maxImageSize ="56dp"

on the fab. Worked for me