Android changeant la couleur du bouton d’action flottant

Vous avez essayé pendant des heures de changer la couleur du bouton d’action flottant du matériau, mais sans succès.

 

J’ai essayé d’append

 android:background="@color/mycolor" 

ou par code

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

ou

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

Mais rien de tout cela n’a fonctionné. J’ai également essayé les solutions dans la “question en double” , mais aucune ne fonctionne, le bouton est resté vert et est également devenu un carré.

Je voudrais une réponse détaillée, merci.

PS: Il serait également bon de savoir comment append un effet d’entraînement, cela ne pourrait pas non plus être compris.

Comme décrit dans la documentation , il prend par défaut la couleur définie dans l’atsortingbut styles.xml colorAccent .

La couleur d’arrière-plan de cette vue correspond par défaut au colorAccent de votre thème. Si vous souhaitez changer cela à l’exécution, vous pouvez le faire via setBackgroundTintList (ColorStateList).

Si vous souhaitez changer la couleur

  • en XML avec l’atsortingbut app: backgroundTint
  
  • en code avec .setBackgroundTintList (réponse ci-dessous par ywwynm )

Comme @Dantalian mentionné dans les commentaires, si vous souhaitez changer la couleur de l’icône, vous pouvez utiliser

 android:tint="@color/white" 

La réponse de Vijet Badigannavar est correcte mais l’utilisation de ColorStateList est généralement compliquée et il ne nous a pas dit comment le faire. Puisque nous nous concentrons souvent sur la modification de la couleur de View dans un état normal et pressé, je vais append plus de détails:

  1. Si vous voulez changer la couleur de FAB en état normal, vous pouvez simplement écrire

     mFab.setBackgroundTintList(ColorStateList.valueOf(your color in int)); 
  2. Si vous voulez changer la couleur de FAB dans l’état pressé, merci pour Design Support Library 22.2.1 , vous pouvez simplement écrire

     mFab.setRippleColor(your color in int); 

    En définissant cet atsortingbut, lorsque vous appuyez longuement sur la touche FAB , une ondulation de couleur apparaîtra à votre sharepoint contact et apparaîtra sur toute la surface de FAB . Veuillez noter que cela ne changera pas la couleur de FAB en état normal. Sous API 21 (Lollipop), il n’y a pas d’effet d’entraînement, mais la couleur de FAB change quand vous appuyez dessus.

Enfin, si vous souhaitez implémenter un effet plus complexe pour les états, vous devriez approfondir ColorStateList , voici une question SO discutant: Comment créer ColorStateList par programmation? .

MISE À JOUR: Merci pour le commentaire de @ Kaitlyn. Pour supprimer un trait de FAB en utilisant backgroundTint comme couleur, vous pouvez définir app:borderWidth="0dp" dans votre app:borderWidth="0dp" XML.

Comme Vasil Valchev l’a noté dans un commentaire, c’est plus simple qu’il n’y paraît, mais il y a une différence subtile que je ne remarquais pas dans mon XML.

  

Notez que c’est:

 app:backgroundTint="@android:color/white" 

et non

 android:backgroundTint="@android:color/white" 

Si vous essayez de changer la couleur de FAB en utilisant l’application, il y a un problème. le cadre du bouton a une couleur différente, alors ce que vous devez faire:

 app:backgroundTint="@android:color/transparent" 

et dans le code définir la couleur:

 actionButton.setBackgroundTintList(ColorStateList.valueOf(getResources().getColor(R.color.white))); 

juste utiliser,

 app:backgroundTint="@color/colorPrimary" 

ne pas utiliser,

 android:backgroundTint="@color/colorPrimary" 

Le FAB est coloré en fonction de votre colorAccent .

  
 mFab.setBackgroundTintList(ColorStateList.valueOf(ContextCompat.getColor(mContext,R.color.mColor))); 

D’autres solutions peuvent fonctionner. Il s’agit de l’approche du gorille de 10 livres qui a l’avantage d’être largement applicable dans ce cas et dans des cas similaires:

Styles.xml:

  

votre mise en page XML:

  

Le document suggère qu’il prend le @ color / accent par défaut. Mais nous pouvons le remplacer par du code en utilisant

 fab.setBackgroundTintList(ColorStateList) 

Rappelez-vous aussi

La version minimale de l’API pour utiliser cette bibliothèque est 15, vous devez donc la mettre à jour! Si vous ne voulez pas le faire, vous devez définir un dessin personnalisé et le décorer!

   

Notez que vous ajoutez des couleurs dans res / values ​​/ color.xml et incluez l’atsortingbut dans votre fab.

  app:backgroundTint="@color/addedColor" 

Grâce à l’autocomplétion. J’ai eu de la chance après quelques coups et essais:

  xmlns:card_view="http://schemas.android.com/apk/res-auto" card_view:backgroundTint="@color/whicheverColorYouLike" 

– ou – (les deux sont fondamentalement la même chose)

  xmlns:app="http://schemas.android.com/apk/res-auto" app:backgroundTint="@color/whicheverColorYouLike" 

Cela a fonctionné pour moi sur l’API version 17 avec la bibliothèque de conception 23.1.0.

J’ai le même problème et je me suis arraché les cheveux. Merci pour ceci https://stackoverflow.com/a/35697105/5228412

Ce que nous pouvons faire..

  favourite_fab.setImageDrawable(ContextCompat.getDrawable(getBaseContext(), R.drawable.favourite_selected)); 

cela fonctionne très bien pour moi et souhaite à ceux qui vont arriver ici.

Ce qui nous manque, c’est que, avant de définir la couleur du bouton, il est important de travailler sur la valeur souhaitée pour cette couleur. Donc, vous pouvez aller aux valeurs> couleur. Vous trouverez les valeurs par défaut, mais vous pouvez également créer des couleurs en les coupant et en les collant, en modifiant les couleurs et les noms. Alors … quand vous allez changer la couleur du bouton flottant (dans activity_main), vous pouvez choisir celui que vous avez créé

Exemple – code sur valeurs> couleurs avec couleurs par défaut + 3 autres couleurs que j’ai créées:

 < ?xml version="1.0" encoding="utf-8"?>  #3F51B5 #303F9F #FF4081 #f52411 #8e8f93 #494848  

Maintenant, mon bouton d’action flottant avec la couleur que j’ai créée et nommée “corPar”:

  

Cela a fonctionné pour moi. Bonne chance!

Je l’ai fait comme ceci Android: background = “@ color / colorAccent” je vais juste dans le dossier res puis cliquez sur les valeurs de dossier et ensuite sur colors.xml dans colors.xml Je change juste la couleur de colorAccent et l’appelle dans Android: background et c’est fait

Bouton Modifier l’action flottante Couleur d’arrière-plan à l’aide de l’application de ligne ci-dessous: backgroundTint = “@ color / blue”

Changer le bouton d’action flottant icône couleur android: teinte = “@ color / white”

vous pouvez l’utiliser si vous souhaitez modifier le code floating.setBackgroundTintList (getResources (). getColorStateList (R.color.vermelho));

ajouter des couleurs dans le fichier color.xml

append des couleurs dans le fichier color.xml, puis append cette ligne de code … floatingActionButton.setBackgroundTintList(ColorStateList.valueOf(getResources().getColor(R.color.fab2_color)));