1. ホーム
  2. java

[解決済み] Androidでフローティングアクションボタンの色を変更する

2022-03-16 13:44:33

質問

マテリアルのフローティングアクションボタンの色を変更したいのですが、うまくいきません。

<android.support.design.widget.FloatingActionButton
    android:id="@+id/profile_edit_fab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="end|bottom"
    android:layout_margin="16dp"
    android:clickable="true"
    android:src="@drawable/ic_mode_edit_white_24dp" />

追加してみました。

android:background="@color/mycolor"

またはコードを介して

FloatingActionButton fab = (FloatingActionButton) rootView.findViewById(R.id.profile_edit_fab);
fab.setBackgroundColor(Color.parseColor("#mycolor"));

または

fab.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#mycolor")));

しかし、上記のどれもがうまくいきませんでした。提案された重複する質問の解決策も試しましたが、どれもうまくいきません。ボタンは緑のままで、四角にもなってしまいました。

追伸:波及効果の付け方も分かると良いのですが、これも分かりませんでした。

解決方法は?

に記載されているように ドキュメント で設定された色がデフォルトで使用されます。 スタイル.xml 属性 カラーアクセント .

このビューの背景色のデフォルトは、お使いのテーマのcolorAccentです。実行時にこれを変更したい場合は、setBackgroundTintList(ColorStateList) を使用して変更することができます。

色を変更したい場合

  • という属性でXMLに記述します。 app:backgroundTint
<android.support.design.widget.FloatingActionButton
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/ic_add"
    app:backgroundTint="@color/orange"
    app:borderWidth="0dp"
    app:elevation="6dp"
    app:fabSize="normal" >

  • というコードで .setBackgroundTintList (以下、回答は ywwynm )

コメントで @Dantalian さんがおっしゃっているように、デザインサポートライブラリのアイコンカラーを変更したい場合 v22まで(含む) を使用することができます。

android:tint="@color/white"     

デザインサポートライブラリ用 v23以降 を使用することができます。

app:tint="@color/white"   

また androidX ライブラリの場合、xmlレイアウトで0dpのボーダーを設定する必要があります。

<com.google.android.material.floatingactionbutton.FloatingActionButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/ic_add"
    app:backgroundTint="@color/orange"
    app:borderWidth="0dp"
    app:elevation="6dp"
    app:fabSize="normal" />