Android: значок с плавающей кнопкой не центрирован

Я пытаюсь создать плавающую кнопку в моем приложении. Кнопка есть, но изображение на кнопке немного вверх (см. Изображение).

enter image description here

Я не могу понять, что с ним не так. Ниже приведена часть XML для плавающей кнопки.

<android.support.design.widget.FloatingActionButton
        android:id="@+id/buttonUp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="16dp"
        android:layout_marginTop="480dp"
        android:clickable="true"
        android:scaleType="center"
        android:src="@drawable/btn_back_to_top_3x"
        app:layout_anchor="@id/layout"
        app:layout_anchorGravity="bottom|right|end"
        app:backgroundTint="@android:color/background_light"
        app:fabSize="normal" />

Кнопка показывает, где я ее хотел. Кажется, единственная проблема - изображение внутри не по центру. Почему это происходит?

РЕДАКТИРОВАТЬ: После еще одного осмотра, я понял, что само изображение имеет проблему, когда изображение на самом деле не отцентрировано и есть пространство на нижней стороне (что приводит к перемещению изображения вверх).

Ответ 1

Причина в том, что ваш имидж не в нужном размере !!

Размер круга по умолчанию с плавающей кнопкой действия - 56 x 56 точек на дюйм, чтобы лучше всего использовать его для фонового изображения!

Если вы собираетесь на мини, должно быть: 40 х 40dp

Если вы хотите изменить только значок интерьера (только значок), используйте значок 24 x 24dp для размера по умолчанию

Чтобы проверить это снова, я скачал изображение из Интернета и уменьшил его до 56dp, сохранив небольшое пространство для балансировки (я не очень хорош в Photoshop)

enter image description here

и добавил это к вашему виду FB и сделал фон желтым, чтобы прояснить его.

выход:

enter image description here

Это означает, что это зависит от того, imageButton изображение вы добавляете, и от его размера, если вы хотите получить полный фон, вы можете даже использовать imageButton

См.: https://material.io/guidelines/components/buttons-floating-action-button.html#buttons-floating-action-button-floating-action-button

Ответ 2

Я столкнулся с той же проблемой. следующее решение сработало для меня

app:fabCustomSize="40dp"

Ответ 3

Вы должны установить значение fabCustomSize, например, FAB, точно такого же размера:

<android.support.design.widget.FloatingActionButton
        android:layout_width="60dp"
        android:layout_height="60dp"
        app:fabCustomSize="60dp"
        android:src="@drawable/plus_icon"
        app:rippleColor="@color/colorPrimaryDark" />

Ответ 4

Попробуйте сделать, чтобы зафиксировать высоту и ширину...

    android:layout_width="50dp"
    android:layout_height="50dp"

и, пожалуйста, отрегулируйте свой макет внизу другим способом.

 android:layout_marginTop="480dp" 

это не правильно, мое предложение попытается установить ваш FloatingActionButton внутри Relative Layout.. и установить как это свойство..

    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true"

Ответ 6

Лучшее решение - не жестко задавать размер FAB.

Значок будет центрирован с атрибутом android:scaleType="center"

<android.support.design.widget.FloatingActionButton
                android:id="@+id/search_fab"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:scaleType="center"
                android:layout_marginEnd="10dp"
                android:src="@drawable/fab_search_icon"
                app:backgroundTint="@color/colorPrimary"
                app:elevation="4dp"
                app:fabSize="normal"/>