come cambiare il colore dell'indicatore di testo della scheda? Posso cambiare l'icona usando il tag di selezione riferito allo example. ma non posso al colore del testo. Come?come cambiare il colore del testo indicatore delle schede in Android?
risposta
Style si nella vostra abitudine cambiamento tema
<item name="android:tabWidgetStyle">@android:style/Widget.TabWidget</item>
e
<style name="Widget.TabWidget">
<item name="android:textAppearance">@style/TextAppearance.Widget.TabWidget</item>
<item name="android:ellipsize">marquee</item>
<item name="android:singleLine">true</item>
</style>
<style name="TextAppearance.Widget.TabWidget">
<item name="android:textSize">14sp</item>
<item name="android:textStyle">normal</item>
<item name="android:textColor">@android:color/tab_indicator_text</item>
</style>
Ecco una nuova risposta che ho trovato da Fred Grott (http://knol.google.com/k/fred-grott/advance-tabs/), dopo un po 'di ricerca web.
Ciò consente di impostare uno selector
per il colore del testo in modo che sia possibile utilizzare un colore diverso quando la scheda è selezionata o meno. Che può essere molto utile se si utilizza un colore di sfondo diverso per la scheda se è selezionata. Naturalmente puoi anche semplicemente inserire un colore normale e non un selettore.
final TextView tv = (TextView) tabWidget.getChildAt(i).findViewById(android.R.id.title);
tv.setTextColor(this.getResources().getColorStateList(R.color.text_tab_indicator));
Dove R.color.text_tab_indicator è un selector xml file si trova nella cartella res/drawable.
In altre parole, il testo dell'indicatore è in realtà un TextView
che è recuperabile tramite l'oggetto View
a cui è possibile accedere dall'oggetto TabWidget
.
Dai uno sguardo agli esempi di Fred per maggiori informazioni e contesti riguardanti le dichiarazioni delle variabili e altri trucchi.
tv è nullo , findViewById (android.R.id.title) non lo trova – trampster
Prova ColorStateLists. In bocca al lupo.
La risposta di Danny C è corretta al 100%. Volevo solo aggiungervi qualcosa per ottenere una risposta completa con il file di risorse.
Il text_tab_indicator in File res/colore
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:textColor="@color/text_tab_selected"
android:state_selected="true" />
<item android:textColor="@color/text_tab_unselected"
android:state_selected="false" />
</selector>
E questo text_tab_unselected & text_tab_selected sarà simile a questo sotto i colori/valori cartella
<resources>
<color name="text_tab_selected">#ffffff</color>
<color name="text_tab_unselected">#95ab45</color>
Dopo che finalmente aggiungere la risposta di Dannyy in scheda classe file
final TextView tv = (TextView) tabWidget.getChildAt(i).findViewById(android.R.id.title);
tv.setTextColor(this.getResources().getColorStateList(R.color.text_tab_indicator));
'android: textColor' dovrebbe essere' android: color' nel file text_tab_indicator.xml. – iStar
getColorStateList è deprecato, quindi utilizzare ContextCompat.getColorStateList (context, R.color.text_tab_indicator). – CoolMind
non riesce perché la tv è nullo, non sembra essere in grado di trovare un TextView con il titolo id. Il mio codice è in OnCreate del frammento contenente il TabLayout – trampster
Il cambio di colore può anche essere dichiarato senza usare java - che è probabilmente meglio.
ho fatto modifiche al text_tab_indicator (avviso textColor è stato cambiato in 'color'):
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:color="@color/text_tab_selected" />
<item android:state_selected="false" android:color="@color/text_tab_unselected" />
</selector>
impostare lo stile del TabWidget per puntare a uno stile specifico nel codice xml:
<TabWidget
...
style="@style/TabText"
/>
dichiarare il vostro text_tab_indicator situato in/res/colore come avete voluto il colore in stile
<style name="TabText">
<item name="android:textColor">@color/tab_text_color</item>
</style>
Ha funzionato come un fascino (per me).
Cheers, Randall
Anche se questa soluzione sembra perfetta, non ha funzionato su entrambi i miei dispositivi (Android 5 e 2.3). – CoolMind
ottenuto. attraverso questo link: http://android.git.kernel.org/?p=platform/frameworks/base.git;a=blob;f=core/res/res/values/themes.xml;h=6b3d7407d1c895a3c297e60d5beac98e2d34c271;hb = HEAD e riferisci gli APIDemos. Grazie . – Praveen
@DroidBase, @Alex Volovoy, dove devo posizionare gli stili. Quando ho messo in un file XML separato nella cartella valori, ha ottenuto l'errore 'Errore nel recupero genitore per la voce: No risorsa trovato che corrisponde al nome dato 'Widget'.' –
@Mithun: Si prega di inviare qualche frammento di codice trovare la soluzione esatta. La mia ipotesi è che tu non abbia menzionato l'attributo genitore. cioè ignorare lo stile di default di un oggetto XML – Praveen