Wie mbaird erwähnt, ist die bessere Lösung, Hintergrund mit Selektor zu verwenden, also müssen Sie onTabChanged
nicht überprüfen und manuelle Aktualisierung tun. Der minimale Code ist hier:
private void initTabsAppearance(TabWidget tabWidget) {
// Change background
for(int i=0; i < tabWidget.getChildCount(); i++)
tabWidget.getChildAt(i).setBackgroundResource(R.drawable.tab_bg);
}
Wo tab_bg
ist ein XML-ziehbar mit Selektor:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:drawable="@drawable/tab_bg_selected" />
<item android:drawable="@drawable/tab_bg_normal" />
</selector>
Für die volle Tab Anpassung werde ich den Code zum Ändern Registerkarte Textstil mit benutzerdefinierten Designs hinzufügen. Fügen Sie diese auf styles.xml
:
<resources>
<style name="MyCustomTheme" parent="@android:style/Theme.Light.NoTitleBar">
<item name="android:tabWidgetStyle">@style/CustomTabWidget</item>
</style>
<style name="CustomTabWidget" parent="@android:style/Widget.TabWidget">
<item name="android:textAppearance">@style/CustomTabWidgetText</item>
</style>
<style name="CustomTabWidgetText" parent="@android:style/TextAppearance.Widget.TabWidget">
<item name="android:textSize">12sp</item>
<item name="android:textStyle">bold</item>
</style>
</resources>
dieses Thema zu verwenden, definieren Sie es in AndroidManifest.xml:
<application android:theme="@style/MyCustomTheme">
Und jetzt haben Sie Tab Widgets mit benutzerdefinierten Hintergrund und benutzerdefinierte Textstil.
Vielen Dank, das hat mir wirklich geholfen. Gibt es eine Möglichkeit, diesen Ansatz in XML zu implementieren? – teoREtik
@teoREtik XML ist ein statischer Inhalt, nur für den Fall, dass Ihre Aktivität zum ersten Mal gestartet wird (Layout-Initialisierung), also nein. – Blundell
Vielen Dank für Ihre Hilfe .. Diese Antwort ist sehr hilfreich .. +1 für das .. Prost .. !! – Aditya1510