J'ai essayé de changer la couleur du bouton d'action flottante du matériau, 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 via 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 ce qui précède n'a fonctionné. J'ai également essayé les solutions de la question en double proposée, mais aucune ne fonctionne; le bouton est resté vert et est également devenu un carré.
PS Ce serait également bien de savoir comment ajouter un effet d'entraînement, je ne pouvais pas comprendre cela non plus.
Réponses:
Comme cela est décrit dans la documentation , par défaut , il prend le jeu de couleurs dans styles.xml attribut colorAccent .
Si vous souhaitez changer de couleur
Comme @Dantalian l'a mentionné dans les commentaires, si vous souhaitez modifier la couleur de l'icône de la bibliothèque de support de conception jusqu'à la v22 (incluse) , vous pouvez utiliser
Pour la bibliothèque de support de conception depuis la version 23, vous pouvez utiliser:
De plus, avec les
androidX
bibliothèques, vous devez définir une bordure 0dp dans votre disposition xml:la source
La réponse de Vijet Badigannavar est correcte mais l'utilisation
ColorStateList
est généralement compliquée et il ne nous a pas dit comment procéder. Puisque nous nous concentrons souvent sur le changementView
de couleur de l'état normal et pressé, je vais ajouter plus de détails:Si vous voulez changer
FAB
la couleur de l'état normal, vous pouvez simplement écrireSi vous voulez changer
FAB
la couleur de l'état pressé, merci pour Design Support Library 22.2.1 , vous pouvez simplement écrireEn définissant cet attribut, lorsque vous appuyez longuement sur le
FAB
, une ondulation avec votre couleur apparaîtra à votre point de contact et se révélera sur toute la surface deFAB
. Veuillez noter qu'il ne changera pasFAB
la couleur de l 'état normal. En dessous de l'API 21 (Lollipop), il n'y a pas d'effet d'entraînement maisFAB
la couleur de change toujours quand vous appuyez dessus.Enfin, si vous voulez implémenter un effet plus complexe pour les états, alors vous devriez creuser profondément
ColorStateList
, voici une question SO en discutant: Comment puis-je créer ColorStateList par programme? .MISE À JOUR: Merci pour le commentaire de @ Kaitlyn. Pour supprimer le trait de FAB en utilisant backgroundTint comme couleur, vous pouvez définir
app:borderWidth="0dp"
votre XML.la source
app:borderWidth
programmation? MerciFloatingActionButton
, je crains que vous ne puissiez pas le paramétrer pour le moment car il n'y a pas de setter pourmBorderWidth
.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:
et non
la source
android:backgroundTint=""
proviennent du niveau Api 21 et font partie de la conception matérielle de Lollipop et seront ignorées sous Lollipop. De plus, cela ne change pasFAB
complètement la couleur car ce n'est pas une couleur unie. Vous devez utiliserapp:
celui pour le faire fonctionner.android:color
fait planter mon application, et ça me rendait dingue! Merci d'avoir sauvegardé mon application et ce qui reste de ma raison ;-)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:
et dans le code, définissez la couleur:
la source
utilisez simplement,
ne pas utiliser,
la source
Le FAB est coloré en fonction de votre
colorAccent
.la source
la source
D'autres solutions peuvent fonctionner. C'est 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:
la source
String types not allowed (at 'theme' with value 'AppTheme.FloatingAccentButtonOverlay')
. Peut-être que je manque un point avec le styles.xml ....android:theme="@style/AppTheme.FloatingAccentButtonOverlay"
mais ce solutin ne fonctionne pas pour moi de toute façon ...Le document suggère qu'il prend la @ couleur / accent par défaut. Mais nous pouvons le remplacer par du code en utilisant
Rappelez-vous également,
La version minimale de l'API pour utiliser cette bibliothèque est de 15, vous devez donc la mettre à jour! si vous ne voulez pas le faire, vous devez définir un dessinable personnalisé et le décorer!
la source
Modification de la couleur d'arrière-plan du bouton d'action flottante à l'aide de la ligne ci-dessous
Modification de la couleur de l'icône du bouton d'action flottante
la source
Merci à la saisie semi-automatique. J'ai eu de la chance après quelques succès et essais:
- ou - (les deux sont fondamentalement la même chose)
Cela a fonctionné pour moi sur l'API version 17 avec la bibliothèque de conception 23.1.0.
la source
J'ai eu le même problème et c'est tout arracher mes cheveux. Merci pour cela https://stackoverflow.com/a/35697105/5228412
Ce que nous pouvons faire..
cela fonctionne bien pour moi et souhaite à d'autres qui atteindront ici.
la source
Notez que vous ajoutez des couleurs dans res / values / color.xml et incluez l'attribut dans votre fab
la source
Avec le matériel Thème et les composants matériels
FloatingActionButton
par défaut , il prend la couleur définie dans l'styles.xml
attributcolorSecondary
.app:backgroundTint
attribut en xml:Vous pouvez utiliser
fab.setBackgroundTintList();
Vous pouvez personnaliser votre style en utilisant l'
<item name="backgroundTint">
attributmaterialThemeOverlay
attribut pour remplacer les couleurs par défaut uniquement pour certains composants:la source
Nouveau mappage d'attribut de thème pour le bouton d'action flottante dans le matériau 1.1.0
Dans le thème de votre application:
la source
Lorsque vous utilisez la liaison de données, vous pouvez faire quelque chose comme ceci:
J'ai fait un exemple très simple
la source
je l'ai fait comme cet android: background = "@ color / colorAccent" je vais juste dans le dossier res puis je clique sur les valeurs du dossier puis sur colors.xml dans colors.xml je change juste la couleur de colorAccent et je l'appelle dans android: background et c'est fait
la source
Le point qui nous manque, c'est qu'avant de définir la couleur sur le bouton, il est important de travailler sur la valeur souhaitée pour cette couleur. Vous pouvez donc aller à valeurs> couleur. Vous trouverez celles par défaut, mais vous pouvez également créer des couleurs en les collant et en les collant, en changeant les couleurs et les noms. Ensuite ... 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:
Maintenant mon bouton d'action flottant avec la couleur que j'ai créée et nommée "corPar":
Ça a marché pour moi. Bonne chance!
la source
Si vous avez un bouton d'action flottant sans dessin, vous pouvez modifier la teinte par programme en utilisant:
la source
ajoutez des couleurs dans le fichier color.xml puis ajoutez cette ligne de code ...
floatingActionButton.setBackgroundTintList(ColorStateList.valueOf(getResources().getColor(R.color.fab2_color)));
la source
Vous pouvez utiliser ce code au cas où vous voudriez changer la couleur par programme
la source
utilisation
app: backgroundTint = "@ color / orange" dans
la source
pour la conception de matériaux, je viens de changer la couleur du bouton d'action flottante comme ceci, ajoutez les deux lignes ci-dessous dans votre bouton d'action flottant xml. Et.. Voila,
la source
à Kotlin:
la source