web-dev-qa-db-fra.com

Pourquoi mon icône FloatingActionButton est-elle noire?

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>

 enter image description here

6
Álysson Alexandre

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"
/>
7
David Jarvis

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):

 enter image description here

7
Abolfazl Kalamati

La classe FloatingActionButton d'AndroidX utilise l'attribut thème colorOnSecondary pour teinter son icône.

https://github.com/material-components/material-components-Android/blob/master/lib/Java/com/google/Android/material/floatingactionbutton/res/values/styles.xml#L39

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.

https://github.com/material-components/material-components-Android/blob/master/lib/Java/com/google/Android/material/color/res/values/colors.xml#L26

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.

2
Ben P.

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"

/>

0
Sandeep Insan

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.

0
Lekr0

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);