2010-03-30 46 views
6

Tôi không biết mình đã làm gì nhưng trong một khoảng thời gian TabWidget của tôi có các tab màu trắng trông rất đẹp. Tôi không bao giờ thiết lập một chủ đề hoặc nền/màu nền trước trong dự án của tôi cả. Lần sau tôi biên dịch nó, nó đã hoàn nguyên trở lại các tab màu xám. Ứng dụng của tôi đang sử dụng chủ đề tối mặc định. Ngay cả khi tôi đặt chủ đề ứng dụng thành ánh sáng, các tab vẫn có màu xám. Vì vậy, rõ ràng nó là cái gì khác mà thay đổi màu sắc của các tab. Bất cứ ai biết làm thế nào để làm điều này?TabWidget màu nền trước màu trắng?

+0

Bạn có lẽ thử nghiệm trên hai phiên bản khác nhau của nền tảng này? Kiểu tab đã thay đổi trong 2.0. Ngoài ra, nếu bạn có thể đăng ảnh chụp màn hình, được chụp bằng 'DDMS', nó sẽ giúp ích rất nhiều. –

+0

Ah, vâng. Nó được biên dịch từ 1.6. Có cách nào để tự đặt cùng màu cho 2.0+ không? – Monstieur

+0

Tôi gặp sự cố này và xác định rằng thuộc tính 'targetSdkVersion' trong AndroidManifest.xml đã khiến nó thay đổi đối với tôi. –

Trả lời

15

tôi đã gặp sự cố do lỗi trong chủ đề ánh sáng của Android 1.6 (văn bản chỉ báo tab có màu trắng). Tôi đã có thể ghi đè lên các theme mặc định như sau:

  1. Tôi tạo ra một chủ đề tùy chỉnh mà thừa hưởng từ chủ đề mặc định:

styles.xml:

<style name="MyTheme" parent="@android:style/Theme.Light"> 
    <item name="android:tabWidgetStyle">@style/LightTabWidget</item> 
</style> 

<style name="LightTabWidget" parent="@android:style/Widget.TabWidget"> 
    <!-- set textColor to red, so you can verify that it applied. --> 
    <item name="android:textColor">#f00</item> 
</style> 

Sau đó, tôi chỉ áp dụng đề tài mà vào ứng dụng của tôi bằng cách thêm android:theme="@style/MyTheme" vào phần tử <application /> trong số AndroidManifest.xml của tôi.

+0

thanx steve, nó đã giúp tôi và bạn thực hiện cuộc sống của tôi –

6

Kiểm tra câu trả lời này của tôi: Background in tab widget ignore scaling

Bạn cũng có thể tham khảo các android.graphics.drawable gói

Trong code của bạn, bạn có thể đặt nền tảng cho các tab của bạn như thế này:

tabHost.getTabWidget().getChildAt(0).setBackgroundResource(
      android.R.color.white); 
+0

Điều này làm cho nền nền màu đen không có vấn đề gì. – Monstieur

1

trong public void onCreate(Bundle savedInstanceState)

  `tabHost = getTabHost(); 
      tabHost.setOnTabChangedListener(this); 
    tabHost.setCurrentTab(0); 
    setTabColor();` 

so với người nghe:

public void onTabChanged (String tabId) { setTabColor();

cuối cùng là chức năng, trong đó thiết lập foreground và background quá:

public void setTabColor() { 
    // set foreground color: 
    for (int i = 0; i < tabHost.getTabWidget().getChildCount(); i++) { 
     RelativeLayout rl = (RelativeLayout) tabHost.getTabWidget().getChildAt(i); 
     ImageView imageView = (ImageView) rl.getChildAt(0);// change it if you want it 
     TextView textView = (TextView) rl.getChildAt(1);//   
     textView.setTextColor(Color.parseColor("#FFFFFF")); 
    } 

    // set background color: 
    for (int i = 0; i < tabHost.getTabWidget().getChildCount(); i++) { 
     tabHost.getTabWidget().getChildAt(i).setBackgroundColor(Color.parseColor("#010101")); // unselected 
    } 
    tabHost.getTabWidget().getChildAt(tabHost.getCurrentTab()).setBackgroundColor(Color.parseColor("#121288")); // selected 
} 
0

Trong onCreated():

tabHost.setCurrentTab(0); 

// Set tabs text color to white: 
TabWidget tabWidget = tabHost.getTabWidget(); 
int whiteColor = getResources().getColor(R.color.white); 
int someOtherColor = getResources().getColor(R.color.someOtherColor); 
for(int i = 0; i < tabWidget.getChildCount(); i++){ 
    View tabWidgetChild = tabWidget.getChildAt(i); 
    if(tabWidgetChild instanceof TextView){ 
     ((TextView) tabWidgetChild).setTextColor(whiteColor); 
    } else if(tabWidgetChild instanceof Button){ 
     ((Button) tabWidgetChild).setTextColor(whiteColor); 
    } else if(tabWidgetChild instanceof ViewGroup){ 
     ViewGroup vg = (ViewGroup)tabWidgetChild; 
     for(int y = 0; y < vg.getChildCount(); y++){ 
      View vgChild = vg.getChildAt(y); 
      if(vgChild instanceof TextView){ 
       ((TextView) vgChild).setTextColor(whiteColor); 
      } 
     } 
     vg.setBackgroundColor(someOtherColor); 
    } 
} 
Các vấn đề liên quan