以下は私が使用しているコードです。私はandroidxを使用しています。すべてのFABには、たとえ白い色があっても、黒いアイコンが付いています。
mylayout.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:layout_gravity="center"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<include layout="@layout/content_geral" />
<com.google.Android.material.floatingactionbutton.FloatingActionButton
Android:id="@+id/fab"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_gravity="bottom|end"
Android:layout_margin="24dp"
app:backgroundTint="@color/colorPrimary"
app:srcCompat="@drawable/ic_cloud_upload"
tools:ignore="VectorDrawableCompat" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
style.xml
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
</style>
AndroidXを使用している場合、アイコンの色を変更するにはapp:tint
とは対照的に Android:tint
<com.google.Android.material.floatingactionbutton.FloatingActionButton
style="@style/Widget.MaterialComponents.FloatingActionButton"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_marginEnd="16dp"
Android:layout_marginBottom="16dp"
app:backgroundTint="@color/colorPrimary"
app:tint="@color/white"
app:srcCompat="@drawable/ic_add"
/>
AndroidXのFloatingActionButton
クラスは、colorOnSecondary
テーマ属性を使用してアイコンに色を付けます。
MaterialComponents
テーマ定義に従ってベース定義に進むと、colorOnSecondary
のデフォルト値はdesign_default_color_on_secondary
...およびthatは#000000
。
これを修正するには、app:tint
属性をFloatingActionButtonに直接、または@color/colorOnSecondary
好きなものをテーマに追加します。
「Android:backgroundTint」を使用している場合、このプロパティはFABの背景色を設定しますが、FABアイコンの色を変更するには、「Android:tint」プロパティを次のように使用します。
<Android.support.design.widget.FloatingActionButton
Android:id="@+id/fab"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_gravity="bottom|end"
Android:tint="@Android:color/white"
Android:src="@Android:drawable/ic_input_add"
/>
描画可能なフォルダーでをクリックします
ic_cloud_upload
そしてfillColorを
Android:fillColor="#FFFFFF" // #FFFFFF is for white color
これにより、黒いアイコンが白に変わります。
背景アイコンの色ではなくFABの色を変更しています。 icon colorを変更するには、次を使用します。
Android:tint
[〜#〜] update [〜#〜]
プログラムで色を変更することもできます。
Drawable myFabSrc = getResources().getDrawable(Android.R.drawable.ic_input_add);
Drawable willBeWhite = myFabSrc.getConstantState().newDrawable();
willBeWhite.mutate().setColorFilter(Color.WHITE, PorterDuff.Mode.MULTIPLY);
myFabName.setImageDrawable(willBeWhite);