2010-01-20 10 views
47

मेरी कक्षा फैली फैली TabActivityमैं एंड्रॉइड टैब विजेट की पृष्ठभूमि कैसे बदलूं?

TabHost mTabHost = getTabHost(); 

TabHost.TabSpec tab1 =mTabHost.newTabSpec("tab1"); 
TabHost.TabSpec tab2 =mTabHost.newTabSpec("tab2"); 

tab1 .setIndicator("title tab1"); 
tab2 .setIndicator("title tab2"); 
mTabHost.addTab(tab1);mTabHost.addTab(tab2); 

TabHost.setCurrentTab(0 or 1) 

किसी को भी मेरा मार्गदर्शन कर सकते हैं कि कैसे मैं पृष्ठभूमि छवि या चयनित टैब का रंग बदल सकता हूँ?

उत्तर

25

यदि आप TabHost.OnTabChanged ईवेंट के लिए पंजीकरण करते हैं और दृश्य प्राप्त करने के लिए mTabHost.getCurrentTabView() को कॉल करते हैं, तो view.setBackgroundResource() देखें।

2

क्या this आपकी समस्या का समाधान करता है? मूल रूप से सेटबैकग्राउंड को चुनने के लिए प्रत्येक टैब दृश्य पर चयनकर्ता?

93

यह आपके टैब रंग सेट हो जाएगा:

public static void setTabColor(TabHost tabhost) { 
    for(int i=0;i<tabhost.getTabWidget().getChildCount();i++) { 
     tabhost.getTabWidget().getChildAt(i).setBackgroundColor(Color.parseColor("#FF0000")); //unselected 
    } 
    tabhost.getTabWidget().getChildAt(tabhost.getCurrentTab()).setBackgroundColor(Color.parseColor("#0000FF")); // selected 
} 

और यदि आप इसे onTabChangedListener() के भीतर डाल दिया, यह चयनित टैब के लिए सही रंग रखेंगे।

+0

धन्यवाद एक बहुत, यह वास्तव में मुझे मदद मिली। एक्सएमएल में इस दृष्टिकोण को लागू करने का कोई तरीका है? – teoREtik

+1

@teoretik XML स्थिर सामग्री है, केवल तभी जब आपकी गतिविधि पहली बार लॉन्च की जाती है (लेआउट प्रारंभिकरण), तो नहीं। – Blundell

+0

आपकी मदद के लिए धन्यवाद .. यह उत्तर बहुत उपयोगी है .. इसके लिए +1 .. चीयर्स अप .. !! – Aditya1510

36

mbaird उल्लेख किया है, बेहतर समाधान चयनकर्ता के साथ पृष्ठभूमि उपयोग करने के लिए है, तो आप onTabChanged जाँच करने के लिए नहीं है और मैनुअल अद्यतन करना है। कम से कम कोड यहाँ है:

private void initTabsAppearance(TabWidget tabWidget) { 
    // Change background 
    for(int i=0; i < tabWidget.getChildCount(); i++) 
     tabWidget.getChildAt(i).setBackgroundResource(R.drawable.tab_bg); 
} 

कहाँ tab_bg चयनकर्ता के साथ एक xml drawable है:

<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> 

मैं टैब पाठ शैली बदलते कस्टम थीम का उपयोग के लिए कोड जोड़ देगा पूर्ण टैब अनुकूलन के लिए। 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> 

इस विषय का उपयोग करने के लिए, AndroidManifest.xml में इसे परिभाषित:

<application android:theme="@style/MyCustomTheme"> 

और अब आप कस्टम पृष्ठभूमि और कस्टम पाठ शैली साथ टैब विजेट है।

0

मैंने सभी टैब की जेनेरिक पृष्ठभूमि देने के लिए एक्सएमएल के टैबविड्ज तत्व में 'एंड्रॉइड: पृष्ठभूमि' पैरामीटर सेट किया है।

फिर मैंने'setIndicator 'विधि में किसी अन्य XML से फुले हुए विचारों को पारित किया।

View v = LayoutInflater.from(this).inflate(R.layout.tab_widget, null); 
    TextView label = (TextView) v.findViewById(R.id.tabLabel); 
    label.setText("Whatever"); 
tab1 .setContent(v); 

मुझे लगता है कि यह करने का एक अच्छा तरीका है।

2
>  TabHost mTabHost = getTabHost(); 
>  
>  TabHost.TabSpec tab1 =mTabHost.newTabSpec("tab1"); 
>  TabHost.TabSpec tab2 =mTabHost.newTabSpec("tab2"); 
>  
>  tab1.setIndicator("title tab1"); 
>  tab2.setIndicator("title tab2"); 
>  mTabHost.addTab(tab1) ;mTabHost.addTab(tab2); 
>  
>  TabHost.setCurrentTab(0 or 1); 


mTabHost.getTabWidget().getChildAt(0).setBackgroundResource(R.drawable.tab1selector); 

mTabHost.getTabWidget().getChildAt(1).setBackgroundResource(R.drawable.tab2selector);  

mTabHost.getTabWidget().getChildAt(2).setBackgroundResource(R.drawable.tab3selector);  

mTabHost.getTabWidget().getChildAt(3).setBackgroundResource(R.drawable.tab4selector); 

उपयोग .setBackgroundResource और tabNselector एक एक्सएमएल है - tabNselector.xml

<?xml version="1.0" encoding="UTF-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_selected="false" android:drawable="@drawable/tabN"/> 
    <item android:state_selected="true" android:drawable="@drawable/tabNsel" /> 
</selector> 
संबंधित मुद्दे