Android: значок с плавающей кнопкой не центрирован
Я пытаюсь создать плавающую кнопку в моем приложении. Кнопка есть, но изображение на кнопке немного вверх (см. Изображение).
Я не могу понять, что с ним не так. Ниже приведена часть 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)
и добавил это к вашему виду FB и сделал фон желтым, чтобы прояснить его.
выход:
Это означает, что это зависит от того, 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"
Ответ 5
Используйте (https://github.com/futuresimple/android-floating-action-button) и установите fab: fab_icon = "@drawable/ic_fab_star" на значок центра
Ответ 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"/>