Giả sử thư viện không dùng nữa hoạt động như thường lệ, vì nó là thủ tục tôi đã sử dụng để tô màu các tab của mình. Tôi chỉ cần thiết lập nền trong mã như sau, vì nó đã không có mặt trực tiếp truy cập trong xml:
TabWidget tabs = (TabWidget)getTabWidget();
for (int i = 0; i<tabs.getChildCount(); i++) {
RelativeLayout tab = (RelativeLayout) tabs.getChildAt(i);
tab.setBackgroundDrawable(this.getResources().getDrawable(R.drawable.tabindicator));
Các drawable tabindicator được như sau:
<?xml version="1.0" encoding="utf-8" ?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Non focused states -->
<item android:state_focused="false" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/tab_unselected" />
<item android:state_focused="false" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/tab_selected" />
<!-- Focused states -->
<item android:state_focused="true" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/tab_focus" />
<item android:state_focused="true" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/tab_focus" />
<!-- Pressed -->
<item android:state_selected="true" android:state_pressed="true" android:drawable="@drawable/tab_press" />
<item android:state_pressed="true" android:drawable="@drawable/tab_press" />
</selector>
Các drawables chỉ là 9-patch hình ảnh với màu sắc, mặc dù bạn có thể có được một hiệu ứng tương tự bằng cách sử dụng một màu tiêu chuẩn.
Nguồn
2012-04-11 09:36:29
Điều này càng ít nhiều tại chỗ, cảm ơn. Tôi phải đi lấy TabWidget bằng cách gọi tabHost.getTabWidget() nhưng từ đó, phần còn lại rơi vào vị trí. Cám ơn bạn Stev_k. –
Điều này một lần nữa được sử dụng sau khi 'FragmentTabHost' được giới thiệu trong lib hỗ trợ. Ngoài ra, tab xem con không phải là 'RelativeLayout' nhưng nó là' LinearLayout' trong 'FragmentTabHost'. –