Như mbaird đã đề cập, giải pháp tốt hơn là sử dụng nền với bộ chọn, vì vậy bạn không phải kiểm tra onTabChanged
và cập nhật thủ công. Mã tối thiểu là ở đây:
private void initTabsAppearance(TabWidget tabWidget) {
// Change background
for(int i=0; i < tabWidget.getChildCount(); i++)
tabWidget.getChildAt(i).setBackgroundResource(R.drawable.tab_bg);
}
đâu tab_bg
là một drawable xml với selector:
<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>
Đối với Tab tùy biến đầy đủ, tôi sẽ thêm mã để thay đổi tab văn bản phong cách sử dụng theme tùy chọn. Thêm phần này vào 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>
Để sử dụng theme này, định nghĩa nó trong AndroidManifest.xml:
<application android:theme="@style/MyCustomTheme">
Và bây giờ bạn có widget tab với tùy chỉnh nền và tùy chỉnh văn bản phong cách.
Nguồn
2011-09-17 09:13:10
Cảm ơn rất nhiều, điều này thực sự giúp tôi. Có cách nào để thực hiện cách tiếp cận này trong XML không? – teoREtik
@teoREtik XML là nội dung tĩnh, chỉ khi hoạt động của bạn được khởi chạy lần đầu tiên (bố cục khởi tạo), vì vậy không. – Blundell
Cảm ơn sự giúp đỡ của bạn .. Câu trả lời này rất hữu ích .. 1 cho rằng .. Chúc mừng .. !! – Aditya1510