Voici le code que j'utilise. J'utilise Android. Chaque FAB a une icône noire, même si elle est blanche.
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>
Si vous utilisez AndroidX , pour changer la couleur de l'icône, vous devez utiliser app:tint
au lieu de 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"
/>
J'ai une icône (vecteur) à plusieurs couleurs (fichier joint) mais je ne peux pas utiliser app: tint = "@ color/white" car la couleur de mon icône se transforme en une seule couleur telle que le blanc et je n'en ai pas besoin.
Alors j'ai corrigé mon problème avec set setting setting: teinte à null:
app:tint="@null"
Mon icône (SVG):
La classe FloatingActionButton
d'AndroidX utilise l'attribut thème colorOnSecondary
pour teinter son icône.
Si vous suivez les définitions de thème MaterialComponents
dans les définitions de base, vous verrez que la valeur par défaut de colorOnSecondary
est design_default_color_on_secondary
... et que est défini comme #000000
.
Vous pouvez résoudre ce problème en ajoutant l'attribut app:tint
directement à votre FloatingActionButton ou en redéfinissant @color/colorOnSecondary
dans votre thème pour qu'il soit comme vous le souhaitez.
Vous utilisez "Android: backgroundTint" cette propriété définit la couleur d'arrière-plan de FAB, mais pour modifier la couleur de l'icône FAB, utilisez la propriété "Android: teinte" comme ceci:
<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"
/>
Dans votre dossier pouvant être tiré, cliquez sur
ic_cloud_upload
Et remplacez fillColor par
Android:fillColor="#FFFFFF" // #FFFFFF is for white color
Cela transformera votre icône noire en blanc.
Vous changez background couleur de FAB, pas la couleur de l'icône . Pour changer icon color, utilisez:
Android:tint
METTRE &AGRAVE; JOUR
Vous pouvez également changer de couleur par programme:
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);