Changement de couleur du bouton D'Action flottant de l'androïde
essaie depuis des heures de changer la couleur des boutons flottants, mais sans succès.
<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" />
j'ai essayé d'ajouter
android:background="@color/mycolor"
ou code via
FloatingActionButton fab = (FloatingActionButton) rootView.findViewById(R.id.profile_edit_fab);
fab.setBackgroundColor(Color.parseColor("#mycolor"));
ou
fab.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#mycolor")));
mais aucun de ces éléments n'a fonctionné. J'ai également essayé les solutions dans le "question en double" , mais aucun d'eux ne fonctionne, button est resté vert et est également devenu un carré.
j'aimerais une réponse, merci.
P. S .. Ce serait aussi bien de savoir comment ajouter l'effet d'ondulation, ne pouvait pas comprendre cela non plus.
18 réponses
comme décrit dans la documentation , par défaut il prend la couleur définie dans styles.xml attribut colorAccent .
la couleur d'arrière-plan de cette vue par défaut à la colorAccent de votre thème. Si vous souhaitez modifier ceci à l'exécution, vous pouvez le faire via setBackgroundTintList(ColorStateList).
Si vous souhaitez changer la couleur
- en XML avec l'attribut app: backgroundtin
<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" >
- en code avec .setBackgroundTintList (réponse ci-dessous par ywwwynm )
@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 utiliser ColorStateList
est généralement compliqué et il ne nous a pas dit comment faire. Puisque nous nous concentrons souvent sur la modification de la couleur de View
dans l'état normal et pressé, je vais ajouter plus de détails:
-
si vous voulez changer la couleur de
FAB
dans l'état normal, vous pouvez juste écriremFab.setBackgroundTintList(ColorStateList.valueOf(your color in int));
-
Si vous voulez changer
FAB
couleur dans l'état pressé, merci pour la bibliothèque de soutien de conception 22.2.1 , vous pouvez juste écriremFab.setRippleColor(your color in int);
en définissant cet attribut, lorsque vous avez appuyé longtemps sur le
FAB
, une ondulation avec votre couleur apparaîtra à votre point de contact et révélera dans toute la surface deFAB
. Veuillez noter qu'il ne changera pas la couleur deFAB
dans l'état normal. En dessous de API 21 (Lollipop), il n'y a pas d'effet d'ondulation, mais la couleur deFAB
va encore changer lorsque vous êtes à la pression.
enfin, si vous voulez mettre en œuvre un effet plus complexe pour les États, alors vous devez creuser profondément dans ColorStateList
, voici une question en discutant: Comment puis-je créer ColorStateList programmatically? .
mise à JOUR:
Merci pour le commentaire de @Kaitlyn. Pour supprimer la touche de FAB en utilisant backgroundtin comme couleur, vous pouvez définir app:borderWidth="0dp"
dans votre XML.
Comme Vasil Valchev , a indiqué dans un commentaire, il est plus simple qu'il n'y paraît, mais il y a une subtile différence que je n'étais pas le remarquer dans mon XML.
<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"
app:backgroundTint="@android:color/white"/>
Avis 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 app, Il ya un problème. cadre de bouton ont une couleur différente, donc 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)));
il suffit d'utiliser,
app:backgroundTint="@color/colorPrimary"
ne pas utiliser,
android:backgroundTint="@color/colorPrimary"
le FAB est coloré sur la base de votre colorAccent
.
<style name="AppTheme" parent="Base.Theme.AppCompat.Light">
<item name="colorAccent">@color/accent</item>
</style>
mFab.setBackgroundTintList(ColorStateList.valueOf(ContextCompat.getColor(mContext,R.color.mColor)));
D'autres solutions peuvent fonctionner. C'est le 10 gorille approche qui a l'avantage d'être largement applicable dans ce cas et d'autres semblables:
Styles.xml:
<style name="AppTheme.FloatingAccentButtonOverlay" >
<item name="colorAccent">@color/colorFloatingActionBarAccent</item>
</style>
votre mise en page xml:
<android.support.design.widget.FloatingActionButton
android:theme="AppTheme.FloatingAccentButtonOverlay"
...
</android.support.design.widget.FloatingActionButton>
le document suggère qu'il prend le @color/accent par défaut. Mais nous pouvons l'Annuler sur le code en utilisant
fab.setBackgroundTintList(ColorStateList)
N'oubliez pas,
la version API minimum pour utiliser cette bibliothèque est de 15, vous devez donc la mettre à jour! si vous ne voulez pas le faire, alors vous devez définir un dessinable personnalisé et décorer!
merci à autocomplete. J'ai eu de la chance après quelques coups et des 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 la version 17 de L'API avec la bibliothèque de conception 23.1.0.
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
app:elevation="6dp"
app:backgroundTint="@color/colorAccent"
app:pressedTranslationZ="12dp"
android:layout_margin="@dimen/fab_margin"
android:src="@drawable/add"/>
notez que vous ajoutez des couleurs dans res/values/color.XML et inclure l'attribut dans votre fab
app:backgroundTint="@color/addedColor"
j'ai le même problème et tout me coupe les cheveux. Merci pour ce https://stackoverflow.com/a/35697105/5228412
Ce que nous pouvons faire..
favourite_fab.setImageDrawable(ContextCompat.getDrawable(getBaseContext(), R.drawable.favourite_selected));
ça marche très bien pour moi et souhaiter à d'autres qui arriveront ici.
le point que nous manquons est qu'avant de définir la couleur sur le bouton, il est important de travailler sur la valeur que vous voulez pour cette couleur. Donc vous pouvez aller à valeurs > couleur. Vous trouverez ceux par défaut, mais vous pouvez également créer des couleurs par copping-coller, modifier les couleurs et les noms. Puis... quand vous allez pour changer la couleur du bouton flottant (en activity_main), vous pouvez choisir celui que vous avez créé
Exemple-code sur les valeurs > couleurs avec couleurs par défaut + 3 autres couleurs que j'ai créé:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#3F51B5</color>
<color name="colorPrimaryDark">#303F9F</color>
<color name="colorAccent">#FF4081</color>
<color name="corBotaoFoto">#f52411</color>
<color name="corPar">#8e8f93</color>
<color name="corImpar">#494848</color>
</resources>
maintenant mon bouton D'Action flottant avec la couleur que j'ai créé et nommé "corPar":
<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:layout_margin="@dimen/fab_margin"
android:src="@android:drawable/ic_input_add"
android:tint="#ffffff"
app:backgroundTint="@color/corPar"/>
ça a marché pour moi. Bonne Chance!
Je l'ai fait comme ça android:background="@couleur/colorAccent" je vais simplement dans le répertoire res puis je clique sur les valeurs du répertoire et ensuite sur les couleurs.xml en couleurs.xml je viens de changer la couleur de colorAccent et l'appeler dans android: arrière-plan et son fait
en utilisant Data Binding vous pouvez faire quelque chose comme ceci:
android:backgroundTint="@{item.selected ? @color/selected : @color/unselected}"
changer la couleur de fond du bouton D'Action flottant en utilisant la ligne ci-dessous app: backgroundtin= "@color / blue "
changement de couleur de l'icône du bouton D'action flottant android:tint="@couleur/blanc"
vous pouvez l'utiliser dans le cas où vous souhaitez modifier le code flottant.setBackgroundTintList (getResources ().getColorStateList (R. color.vermelho));
ajouter des couleurs en couleur.fichier xml, puis ajoutez cette ligne de code...
floatingActionButton.setBackgroundTintList(ColorStateList.valueOf(getResources().getColor(R.color.fab2_color)));