J'essaie de créer un ColorStateList
programme en utilisant ceci:
ColorStateList stateList = new ColorStateList(states, colors);
Mais je ne sais pas quels sont les deux paramètres.
Selon la documentation:
public ColorStateList (int[][] states, int[] colors)
Ajouté au niveau d'API 1
Crée un ColorStateList qui renvoie le mappage spécifié des états aux couleurs.
Quelqu'un peut-il m'expliquer comment créer cela?
Quelle est la signification d'un tableau à deux dimensions pour les états?
android
android-color
Anukool
la source
la source
{pressed}
,{focused}
,{-enabled}
,{}
. Pour une bascule , il est peut - être{checked, pressed}
,{pressed}
,{checked, focused}
,{focused}
,{checked}
,{-enabled}
,{}
. Ou une bascule qui ne tient pas mise au point:{checked, pressed}
,{pressed}
,{checked}
,{-enabled}
,{}
.La première dimension est un tableau d'ensembles d'états, la seconde est l'ensemble d'états lui-même. Le tableau de couleurs répertorie les couleurs pour chaque ensemble d'états correspondant, par conséquent, la longueur du tableau de couleurs doit correspondre à la première dimension du tableau d'états (ou il se plantera lorsque l'état est "utilisé"). Ici et exemple:
J'espère que cela t'aides.
Exemple EDIT: une liste d'états de couleurs xml comme:
ressemblerait à ça
la source
new int[]{}
dernier - comme indiqué dans le bloc de code final de cette réponse. La seule valeur annulée que j'utilise généralement est "-enabled". Un autre exemple, si vous voulez trois couleurs différentes: « concentré + pressé », « concentré + non pressé », « pressé + pas concentré », vous pouvez tout simplement{focused, pressed}
,{focused}
,{pressed}
. Le premier "vrai" sera utilisé.{pressed}
,{-pressed}
,{focused}
,{-focused
}. Le problème est que{pressed}
et{-pressed}
couvre TOUTES les possibilités (le bouton est enfoncé ou non), donc aucune couleur répertoriée plus tard ne sera jamais utilisée.!Parfois, cela suffira:
la source
Malheureusement, aucune des solutions ne fonctionne pour moi.
C'est le constructeur du code source:
la source
Voici un exemple de création d'un
ColorList
programme par programme dans Kotlin:la source
Rebondissant sur la réponse de Jonathan Ellis , dans Kotlin, vous pouvez définir une fonction d'assistance pour rendre le code un peu plus idiomatique et plus facile à lire, vous pouvez donc écrire ceci à la place:
colorStateListOf
peut être implémenté comme ceci:J'ai aussi:
Pour que je puisse appeler le même nom de fonction, qu'il s'agisse d'un sélecteur ou d'une seule couleur.
la source
Ma classe de constructeur pour créer
ColorStateList
Exemple d'utilisation
la source
si vous utilisez la ressource Colors.xml
la source
getResources()
est obsolète, il l'est maintenantContextCompat.getColor(this,R.color.colorname);
ouContextCompat.getColor(getActivity(),R.color.colorname);
pour une utilisation dans un fragmentnew int[0]
(en tant qu'élément dans la liste du premier paramètre) est un tableau de longueur nulle et représente la définition de la couleur par défaut. Ici, c'est le seul élément, ce qui signifie que la teinte est appliquée à tous les états du bouton. C'est l'équivalent denew int[]{}
la réponse de Roger Alien.