Changement cliquable TextView de la couleur sur l'objet et cliquez sur?
J'ai un cliquables TextView que je veux donner quelques couleurs. Mais je ne sais pas comment. Voici les extraits de code de mes deux fichiers que je travaille avec:
TextView title = new TextView(this);
title.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
title.setTextColor(R.color.textcolor);
title.setText(titleLine);
title.setTypeface(null, Typeface.BOLD);
title.setClickable(true);
title.setId(idLine);
title.setFocusable(true);
title.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
/* Irrelevant code */
}
});
Et c'est mon textcolor.xml fichier:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:color="#000000"/> <!-- pressed -->
<item android:state_focused="true"
android:color="#000000"/> <!-- focused -->
<item android:color="#000000"/> <!-- default -->
</selector>
Lorsque j'utilise le textcolor-fichier en tapant titre.setTextColor(R. de couleur.textcolor);, le textcolor devient gris, peu importe si je le presse ou. Ce qui est étrange, depuis que j'ai écrit "#000000" dans tous les champs de couleur.
Mais si je supprime le setTextColor code, obtient le textView un peu de couleur grise, et quand je le presse, il devient noir. Mais ce ne sont pas les couleurs que je veux.
Donc, quelqu'un peut m'aider avec ce problème?
Juste pour clarifier: je veux être en mesure de modifier la couleur du texte quand il est normal, pressé et concentré.
- Pour les personnes se référant à cette page par le biais de la recherche, reportez-vous ma réponse si vous êtes à la recherche d'utiliser des couleurs et pas
ColorStateList
. Ma solution fonctionne sans écrire de code en Java 🙂
Vous devez vous connecter pour publier un commentaire.
Si vous souhaitez définir la dynamique de la couleur à partir du code, vous devez passer dans
ColorStateList
comme un argument desetTextColor
passage d'un int pour les résultats de la méthode de réglage de la couleur à tous les états. Il ressemble également à votre xml n'est pas totalement correcte. Exemple deColorStateList
docs ressemble(doit être situé comme ceci:res/color/selector_txt.xml
):UPD sur la façon de définir un
ColorStateList
pour la couleur du texte:Note: La méthode
createFromXml(Resources, XmlPullParser parser)
était dépréciée de l'API de niveau 23.Utilisation
createFromXml(Resources, XmlPullParser parser, Theme)
XML avec son aussi facile que:
Étape 1: Définir la couleur du texte en xml comme ceci
Etape 2: Créer res/color/text_color.xml
Essayer celui-là.. Il a travaillé pour moi:
Nom de fichier: res/color/bg_tab_text_color.xml
Essayer le réglage de la couleur dans le format xml de mise en page comme:
Regarder dans R.java classe (c'est générée automatiquement). Vous avez quelque chose comme ça:
Dans votre code en ligne:
vous n'êtes pas les valeurs de réglage de textcolor.xml mais int R.java (qui contient textcolor.xml l'adresse). La validité de la façon de définir la couleur est:
getResources().getColorStateList
, pasgetResources().getColor
.ContextCompat.getColorStateList(this,R.color.textcolor)
peut être utilisé pour se débarrasser de la dépréciation.C'est très facile.Essayez celui-ci.. Il a travaillé pour moi:
Nom de fichier: res/color/bg_tab_text_color.xml
Essayer le réglage de la couleur dans le format xml de mise en page comme:
Ici est une façon très simple par programme:
Dans res/drawable/tab_textColor.xml:
Dans res/color/text_selector.xml:
Dans la mise en page:
Dans le code: