jak zmienić kolor wskaźnika tekstowego zakładki? mogę zmienić ikonę za pomocą znacznika wyboru, o którym mowa example. ale nie można przejść do koloru tekstu. w jaki sposób?jak zmienić kolor tekstu wskaźnika kart w systemie Android?
Odpowiedz
Style to w niestandardowym zmiany motywu
<item name="android:tabWidgetStyle">@android:style/Widget.TabWidget</item>
i
<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>
Oto nowa odpowiedź znalazłem od Fred Grott (http://knol.google.com/k/fred-grott/advance-tabs/) po krótkim poszukiwaniu internetowej.
Pozwala to ustawić kolor tekstu jako selector
, aby można było użyć innego koloru, gdy wybrana jest karta. Które mogą być bardzo przydatne, jeśli używasz innego koloru tła dla karty, jeśli jest wybrana. Oczywiście możesz po prostu rzucić zwykły kolor, a nie selektor.
final TextView tv = (TextView) tabWidget.getChildAt(i).findViewById(android.R.id.title);
tv.setTextColor(this.getResources().getColorStateList(R.color.text_tab_indicator));
Gdzie R.color.text_tab_indicator jest selector xml file położony w RES/folderu rozciągliwej.
Innymi słowy, tekst wskaźnika to naprawdę TextView
, który można odtworzyć za pomocą obiektu View
, do którego można uzyskać dostęp z obiektu TabWidget
.
Rzuć okiem na przykłady Freda, aby uzyskać więcej informacji i kontekst dotyczący deklaracji zmiennych, a także innych sztuczek.
tv is null , findViewById (android.R.id.title) nie znajduje go – trampster
Wypróbuj ColorStateLists. Powodzenia.
Odpowiedź Danny'ego C jest w 100% poprawna. Chciałem tylko dodać coś, aby uzyskać kompletną odpowiedź z plikiem zasobów.
text_tab_indicator pod pliku res/color
<?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>
I to text_tab_unselected & text_tab_selected będzie wyglądać pod kolorach/wartości folderowi
<resources>
<color name="text_tab_selected">#ffffff</color>
<color name="text_tab_unselected">#95ab45</color>
Potem wreszcie dodać odpowiedź Dannyy w plik z zakładkami
final TextView tv = (TextView) tabWidget.getChildAt(i).findViewById(android.R.id.title);
tv.setTextColor(this.getResources().getColorStateList(R.color.text_tab_indicator));
'android: textColor' powinno być' android: color' w pliku text_tab_indicator.xml. – iStar
getColorStateList jest przestarzałe, więc użyj ContextCompat.getColorStateList (context, R.color.text_tab_indicator). – CoolMind
kończy się niepowodzeniem, ponieważ telewizor ma wartość null, nie można znaleźć TextView z tytułem id. Mój kod znajduje się w OnCreate fragmentu zawierającego TabLayout – trampster
Zmiana koloru może być również podana bez użycia java - co prawdopodobnie jest lepsze.
Zrobiłem zmiany w text_tab_indicator (Zawiadomienie textColor została zmieniona na „kolor”):
<?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>
Ustaw styl TabWidget zwrócić się do konkretnego stylu w kodzie XML:
<TabWidget
...
style="@style/TabText"
/>
Deklarują swoją text_tab_indicator zlokalizowany w/RES/kolor, jak pożądany kolor w stylu
<style name="TabText">
<item name="android:textColor">@color/tab_text_color</item>
</style>
To działało jak czar (dla mnie).
Pozdrowienia, Randall
Chociaż to rozwiązanie wygląda idealnie, nie działało ono na obu moich urządzeniach (Android 5 i 2.3). – CoolMind
masz. przez ten link: http://android.git.kernel.org/?p=platform/frameworks/base.git;a=blob;f=core/res/res/values/themes.xml;h=6b3d7407d1c895a3c297e60d5beac98e2d34c271;hb = HEAD i odsyłaj APIDemos. Dzięki . – Praveen
@DroidBase, @Alex Volovoy, gdzie powinienem umieścić style. Kiedy umieściłem go jako osobny plik xml w folderze wartości, otrzymałem komunikat o błędzie "Błąd podczas pobierania elementu nadrzędnego dla elementu: Nie znaleziono zasobu pasującego do podanej nazwy" Widget ". –
@Mithun: Podaj fragment kodu znajdź dokładne rozwiązanie. Domyślam się, że nie wspomniałeś o atrybucie nadrzędnym. to jest przesłonięcie domyślnego stylu obiektu xml – Praveen