Ответ 1
FloatingActionButton, предоставляемый библиотеками поддержки, не может быть расширен, поскольку методы, которые необходимо будет заменить, устанавливаются как закрытые. Material Components (официальная замена AndroidX для библиотеки поддержки) имеет форму Shape Theming по дорожной карте в течение октября-декабря, что позволит вам делать это официально и легко (без необходимости продления представления).
Но он пока недоступен, так что пока я разветвлял customFloatingActionButton от robertlevonyan, и с некоторыми небольшими изменениями он позволяет вам использовать свою собственную форму. Исходный код доступен здесь.
Чтобы добавить его в свой проект с помощью Gradle, вам нужно будет использовать jitpack. Вы можете добавить его так:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
Затем выполните мою вилку:
implementation 'com.github.JediBurrell:customFloatingActionButton:-SNAPSHOT'
Затем мы создадим форму, созданная вами должна работать нормально.
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<corners
android:topLeftRadius="@dimen/fab_circle_radius"
android:topRightRadius="@dimen/fab_circle_radius"
android:bottomRightRadius="@dimen/fab_circle_radius" />
<solid android:color="@color/colorAccent" />
</shape>
Затем, наконец, добавьте его в свой макет (больше параметров FAB перечислены в репозитории Github):
<com.jediburrell.customfab.FloatingActionButton
android:id="@+id/floating_action_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|right"
android:layout_margin="16dp"
app:fabType="custom"
app:fabShape="@drawable/fab_teardrop"
app:fabIcon="@drawable/ic_add_24dp"
app:fabColor="@color/red" />
И вот как это выглядит: