2012-10-03 3 views
15

Je crée une application qui utilise Android 4.0. Je me demande s'il est possible de changer la couleur du texte d'un commutateur.Comment changer la couleur du texte du commutateur dans Android

J'ai essayé de définir la couleur du texte, mais cela ne fonctionne pas.

Des idées?

Merci d'avance!

+1

publier votre code .. –

+0

Il n'y a pas de code spécifique , c'est juste un interrupteur dans la mise en page, qui est trouvé par ID. Et dans le code j'ai mis le switch.setTextColor (Color.WHITE); –

Répondre

57

Vous devez utiliser android:switchTextAppearance attribut, par exemple:

android:switchTextAppearance="@style/SwitchTextAppearance" 

et styles:

<style name="SwitchTextAppearance" parent="@android:style/TextAppearance.Holo.Small"> 
    <item name="android:textColor">@color/my_switch_color</item> 
</style> 

vous pouvez aussi le faire dans le code, en utilisant également au-dessus des styles:

mySwitch.setSwitchTextAppearance(getActivity(), R.style.SwitchTextAppearance); 

... et comme pour setTextColor et Switch - cette couleur sera utilisée si votre SwitchTextAppearance style ne fournit pas textColor

vous pouvez le vérifier dans Switch code source dans setSwitchTextAppearance:

ColorStateList colors; 
    int ts; 

    colors = appearance.getColorStateList(com.android.internal.R.styleable. 
      TextAppearance_textColor); 
    if (colors != null) { 
     mTextColors = colors; 
    } else { 
     // If no color set in TextAppearance, default to the view's textColor 
     mTextColors = getTextColors(); 
    } 

    ts = appearance.getDimensionPixelSize(com.android.internal.R.styleable. 
      TextAppearance_textSize, 0); 
    if (ts != 0) { 
     if (ts != mTextPaint.getTextSize()) { 
      mTextPaint.setTextSize(ts); 
      requestLayout(); 
     } 
    } 
+1

Je me demande pourquoi couldn Ils ne font que faire fonctionner normalement 'setTextColor' à la place de tout ce gonflement. –

0

TextView.setTextColor() prend un int représentant la couleur (par exemple 0xFFF5DC49) et non l'identificateur de ressource du fichier xml. Dans une activité, vous pouvez faire quelque chose comme:

textView1.setTextColor(getResources().getColor(R.color.mycolor))

en dehors d'une activité que vous aurez besoin d'un exemple de contexte.

textView1.setTextColor(context.getResources().getColor(R.color.mycolor))

Pour en savoir plus consulter this

+1

Bonjour, d'abord merci pour votre réponse! Ce n'est pas la réponse que je cherche, je l'ai eu pour textviews et editTexts. Mais j'en ai besoin pour un switch et je ne sais pas comment .. –

+1

En fait 'setTextColor' n'est pas utilisé pour' Switch', sauf si le style fourni pour 'android: switchTextAppearance' ne définit pas de textColor – imbryk

0

Je pense que vous devez regarder le thème que vous utilisez pour votre application. Parce que la couleur de l'interrupteur est la responsabilité du thème, afaik. Je vous suggère donc de voir comment vous pouvez changer les paramètres d'un thème. Ou vous pouvez créer un thème personnalisé avec les nouvelles couleurs.

Questions connexes