2017-04-10 1 views
1

Je veux changer le Backgroundtint d'une vue et c'est la seule façon que j'ai trouvée. Mais je reçois un message qui ne fonctionne qu'avec certaines API. Puis-je faire en quelque sorte travailler jusqu'à API 15? Ou existe-t-il réellement une meilleure méthode pour montrer à l'utilisateur qu'un bouton est sélectionné?View.setBackgroundTintList avant API 21?

Répondre

2

ViewCompat.setBackgroundTintList() fera l'affaire jusqu'à API 4.

applique une teinte à la drawable d'arrière-plan.

Cela prendra toujours effet lors de l'exécution sur API v21 ou version ultérieure. Lors de l'exécution sur des plates-formes antérieures à l'API v21, elle ne prend effet que si la vue met en œuvre l'interface TintableBackgroundView.

+0

Merci, cela fonctionne, même si le clic a cette animation vraiment laide. – newToEverything

1

Oui,

En utilisant du code java, vous pouvez changer la couleur d'une vue drawable ainsi que comme:

public static void setIconColor(TextView tv, int which, int color) { 
     tv.getCompoundDrawables()[which].mutate(); 
     tv.getCompoundDrawables()[which].setColorFilter(ContextCompat.getColor(tv.getContext(), color), PorterDuff.Mode.SRC_ATOP); 
    } 

    public static void setIconColor(ImageView imageView, int color) { 
     imageView.getDrawable().mutate(); 
     imageView.getDrawable().setColorFilter(ContextCompat.getColor(imageView.getContext(), color), PorterDuff.Mode.SRC_ATOP); 
    } 

Pour Bouton d'utilisateur sélectionné? Vous devez utiliser

android:background="?attr/selectableItemBackground" 

J'espère que cela vous aidera!