Je travaille avec FloatingActionButton
. L'utilisateur devrait pouvoir changer la couleur d'arrière-plan FAB dans un événement onClick
.
Cependant, l'appel recommandé à setBackgroundTintList
ne semble être compatible qu'à partir de 21+ API.
Comment puis-je - correctement - m'y prendre sur les appareils pré-Lollipop? Y a-t-il une alternative que je pourrais utiliser?
Merci d'avance.
Vous pouvez aussi utiliser setSupportBackgroundTintList
Applique une teinte à l'arrière-plan pouvant être dessiné. Ne modifie pas le mode de teinte actuel, qui est SRC_IN par défaut.
Les appels suivants à View.setBackground (Drawable) modifieront automatiquement le dessin et appliqueront la teinte et le mode de teinte spécifiés.
Regardez aussi sur ViewCompat.setBackgroundTintList()
Applique une teinte à l'arrière-plan pouvant être dessiné.
Cela prendra toujours effet lors de l'exécution sur API v21 ou plus récente. Lors de l'exécution sur des plates-formes antérieures à API v21, cela ne prendra effet que si view implémente l'interface TintableBackgroundView.
J'ai trouvé une solution ici sur SO que j'ai déjà utilisée et qui est la suivante:
public static void setButtonTint(Button button, ColorStateList tint) {
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.Lollipop && button instanceof AppCompatButton) {
((AppCompatButton) button).setSupportBackgroundTintList(tint);
} else {
ViewCompat.setBackgroundTintList(button, tint);
}
}
Cela fonctionne pour moi, j'espère que cela fonctionne pour vous aussi.
simple:
fab.setBackgroundTintList(ColorStateList.valueOf(0xFF4CAF50));
fab
est votre FloatingActionButton
bien sûr et 0xFF4CAF50
juste un exemple de couleur
Comme Kamil Seweryn l’a dit dans des commentaires, je peux confirmer que fab.setBackgroundTintList()
fonctionne sur l’instance de Android.support.design.widget.FloatingActionButton
.
J'ai testé sur Samsung Galaxy S5 (Android 6) et Samsung Galaxy S3 (Android 4.3). Les deux fonctionnent correctement.
À partir de XML, vous pouvez utiliser
card_view:backgroundTint="@color/your_color"
où card_view
est xmlns:card_view="http://schemas.Android.com/apk/res-auto"