Androidアプリでは、デフォルトの円ではなく、3つの角が丸い正方形のフローティングアクションボタンを作成する必要があります。ファブは次の画像のようになります。
私はそのようなフォームを作成することができましたが、それを私のファブに適用する方法、またはそれが可能かどうかも知りません。形状のxmlファイルは次のようになります。
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="rectangle">
<solid Android:color="@color/red" />
<corners
Android:topLeftRadius="90dp"
Android:topRightRadius="90dp"
Android:bottomRightRadius="90dp"/>
</shape>
でフォームを変更しようとしました
Android:src="@drawable/my_shape"
しかし、これはボタン内のアイコンのみを変更します。 FloatingActionButtonを拡張する必要があると思いますが、その方法がわかりません。
ファブの形状を変更する方法はありますか?誰かがすでにこれを達成している場合は、サンプルをご覧ください。
サポートライブラリによって提供されるFloatingActionButtonは、置き換える必要があるメソッドがプライベートに設定されているため、拡張できません。 Material Components (サポートライブラリの公式のAndroidXの代替品)には Shape Theming があります roadmap 〜October-Decemberでは、それを公式かつ簡単に(ビューを拡張することなく)行うことができます。
しかし、まだ利用できないので、その間、私は 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>
最後にレイアウトに追加します(GithubリポジトリにさらにFABオプションがリストされています)。
<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" />
そして、これがどのように見えるかです:
探しているのは、ボタンの背景を変更することです
Android:background="@drawable/my_shape"