web-dev-qa-db-ja.com

Androidのフローティングアクションボタン(FAB)の形状を変更するには?

Androidアプリでは、デフォルトの円ではなく、3つの角が丸い正方形のフローティングアクションボタンを作成する必要があります。ファブは次の画像のようになります。

enter image description here

私はそのようなフォームを作成することができましたが、それを私のファブに適用する方法、またはそれが可能かどうかも知りません。形状の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を拡張する必要があると思いますが、その方法がわかりません。

ファブの形状を変更する方法はありますか?誰かがすでにこれを達成している場合は、サンプルをご覧ください。

19
AthaMit

サポートライブラリによって提供される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" />

そして、これがどのように見えるかです:

14
JediBurrell

あなたの質問で、あなたはAndroid:srcを調整しようとしたと言いましたが、それは明らかに間違ったアプローチです。なぜならそれはFloatingActionButtonのコンテンツに関するものだからです。

Android:backgroundパラメーターは形状を変更します。 丸いはずです に注意してください。

この質問は、単に duplicate ではないだけだと思います。なぜなら、その 他の質問 は、色についてだけ質問するからです。

XMLファイルでこれを使用する必要があります。

Android:background="@drawable/my_shape"

探しているのは、ボタンの背景を変更することです

Android:background="@drawable/my_shape"
0
Saurabh Lalwani