2012-10-03 21 views
15

Sto creando un'applicazione che utilizza Android 4.0. Mi chiedo se sia possibile cambiare il colore del testo del testo in un interruttore.Come modificare textcolor dello switch in Android

Ho provato a impostare il colore del testo, ma non funziona.

Qualche idea?

Grazie in anticipo!

+1

pubblicare il tuo codice .. –

+0

Non c'è codice specifico , è solo un interruttore nel layout, che viene trovato dall'ID. E nel codice ho impostato switch.setTextColor (Color.WHITE); –

risposta

57

È necessario utilizzare android:switchTextAppearance attributo, ad esempio:

android:switchTextAppearance="@style/SwitchTextAppearance" 

e negli stili:

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

si può anche farlo in codice, utilizzando anche sopra stili:

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

... e come per setTextColor e Switch - questo colore sarà utilizzato se il vostro stile SwitchTextAppearance non fornisce un textColor

è possibile controllare in Switch codice sorgente in 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

Mi chiedo perché couldn Semplicemente fanno 'setTextColor' funzionare normalmente invece di tutto questo gonfiare. –

0

TextView.setTextColor() accetta un valore int che rappresenta il colore (ad esempio 0xFFF5DC49) non l'ID risorsa dal file xml. In un'attività, si può fare qualcosa di simile:

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

al di fuori di un'attività avrete bisogno di un contesto ad es.

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

Per ulteriori riferimento this

+1

Ciao, innanzitutto grazie per la tua risposta! Questa non è la risposta che sto cercando, l'ho fatto funzionare per le visualizzazioni di testo e per modificare i TESTI. Ma ho bisogno di un interruttore e non sono sicuro di come .. –

+1

In realtà 'setTextColor' non è usato per' Switch', a meno che lo stile previsto per 'android: switchTextAppearance' non definisca un textColor – imbryk

0

Credo che bisogna guardare il tema che si sta utilizzando per la vostra applicazione. Perché il colore dell'interruttore è responsabilità del tema, afaik. Quindi ti suggerisco di dare un'occhiata su come modificare le impostazioni di un tema. O potresti creare un tema personalizzato con i nuovi colori.

Problemi correlati