2010-03-30 19 views
6

मुझे नहीं पता कि मैंने क्या किया लेकिन कुछ समय के लिए मेरे टैबविड्ज में सफेद रंगीन टैब थे जो वास्तव में अच्छे लगते थे। मैंने अपनी परियोजना में कभी भी थीम या पृष्ठभूमि/फोरग्राउंड रंग सेट नहीं किया है। अगली बार जब मैंने इसे संकलित किया तो इसे वापस ग्रे टैब पर वापस कर दिया गया। मेरा आवेदन डिफ़ॉल्ट अंधेरे विषय का उपयोग कर रहा है। भले ही मैं एप्लिकेशन थीम को प्रकाश में सेट करता हूं, टैब अभी भी भूरे रंग के हैं। तो जाहिर है यह कुछ और था जिसने टैब के रंग को बदल दिया। क्या कोई जानता है कि इसे कैसे करना है?टैबविड्ज सफेद अग्रभूमि रंग?

+0

आप शायद मंच के दो विभिन्न संस्करणों पर परीक्षण कर रहे हैं? टैब शैली 2.0 में बदल गई। साथ ही, यदि आप 'डीडीएमएस' के साथ लिया गया स्क्रीनशॉट पोस्ट कर सकते हैं, तो यह बहुत मददगार होगा। –

+0

आह, हाँ। यह 1.6 के लिए संकलन से था। 2.0+ के लिए मैन्युअल रूप से एक ही रंग सेट करने का कोई तरीका है? – Monstieur

+0

मेरे पास यह समस्या थी और यह निर्धारित किया गया था कि यह AndroidManifest.xml में 'targetSdkVersion' विशेषता थी जो इसे मेरे लिए बदल रहा था। –

उत्तर

15

मैं एंड्रॉइड 1.6 की हल्की थीम में एक बग के कारण समस्या हो रही थी (टैब सूचक पाठ सफेद है)।

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> 

तो मैं सिर्फ इतना है कि थीम लागू

  1. मुझे लगता है कि डिफ़ॉल्ट थीम से विरासत में मिली एक कस्टम थीम बनाया: मैं इस प्रकार डिफ़ॉल्ट थीम को ओवरराइड करने में सक्षम था के <application /> तत्व में android:theme="@style/MyTheme" जोड़कर मेरे आवेदन के लिए।

+0

थेंक्स स्टीव, इससे मेरी मदद की और आपने मेरा जीवन बना दिया –

6

चेक मेरा यह जवाब: Background in tab widget ignore scaling

तुम भी, android.graphics.drawable पैकेज

अपने कोड में उल्लेख करने के लिए आप इस तरह अपने टैब के लिए पृष्ठभूमि सेट कर सकते हैं कर सकते हैं:

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

यह टैब पृष्ठभूमि काला बनाता है इससे कोई फर्क नहीं पड़ता। – Monstieur

1
श्रोता की तुलना में public void onCreate(Bundle savedInstanceState)

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

में

:

सार्वजनिक शून्य (स्ट्रिंग tabId) { setTabColor() onTabChanged;

अंत में समारोह है, जो अग्रभूमि और पृष्ठभूमि भी सेट:

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

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); 
    } 
} 
संबंधित मुद्दे