2012-02-20 20 views
7

हाय मेरे पास मेरे टैब विजेट में दो टैब हैं, मैं दो टैब के लिए दो अलग-अलग रंगों को लागू करना चाहता हूं। हर जगह खोज कर, ज्यादातर टैब रंग लागू करते समय समान होते हैं।क्या एंड्रॉइड में चयनित टैब का रंग बदलना संभव है?

अद्यतन

पहला टैब जब चयनित लाल रंग

दूसरे टैब जब चयनित नीले रंग

यहाँ मेरी कोड

tabHost = (TabHost)findViewById(android.R.id.tabhost); 
    TabSpec firstTabSpec = tabHost.newTabSpec("tid1");//these are color red 
    TabSpec secondTabSpec = tabHost.newTabSpec("tid1");//these color blue 
    firstTabSpec.setIndicator("Sales Info",getResources().getDrawable(R.drawable.sales)); 
    Intent photosIntent = new Intent(this, a.class); 
    firstTabSpec.setContent(photosIntent); 
    secondTabSpec.setIndicator("Service Info",getResources().getDrawable(R.drawable.services)); 
    Intent photosIntent1 = new Intent(this, b.class); 
    secondTabSpec.setContent(photosIntent1); 
    tabHost.addTab(firstTabSpec); 
    tabHost.addTab(secondTabSpec); 

उत्तर

12

इस प्रयास करें:

...onCreate(){ 

    ... 
    tabHost.setOnTabChangedListener(new OnTabChangeListener() { 

    @Override 
    public void onTabChanged(String arg0) { 

     setTabColor(tabHost); 
    } 
    }); 
    setTabColor(tabHost); 
... 
} 

//Change The Backgournd Color of Tabs 
public void setTabColor(TabHost tabhost) { 

    for(int i=0;i<tabhost.getTabWidget().getChildCount();i++) 
     tabhost.getTabWidget().getChildAt(i).setBackgroundColor(COLOR_CYAN); //unselected 

    if(tabhost.getCurrentTab()==0) 
      tabhost.getTabWidget().getChildAt(tabhost.getCurrentTab()).setBackgroundColor(COLOR_RED); //1st tab selected 
    else 
      tabhost.getTabWidget().getChildAt(tabhost.getCurrentTab()).setBackgroundColor(COLOR_BLUE); //2nd tab selected 
} 
+0

कृपया मेरा प्रश्न अपडेट करें – Mercy

+0

@micro: कृपया मेरा अपडेट देखें जवाब। – Hiral

+0

धन्यवाद, आप इसके कामकाज को हायरल करते हैं, लेकिन मैं कलरग्रीन (0xCFEB5D) का रंग कोड (color.GREEN) के बजाय लागू करता हूं। यह काम क्यों नहीं कर रहा है? – Mercy

7

आपसेट कर सकते हैं के लिए अपने TabHostsetOnTabChangedListener उपयोग करने और इसे गतिशील रूप से परिवर्तित +२७७२०३३२१०,

public void onCreate(Bundle savedInstanceState){ 
    // add your tabs here 

    // set the First Tab as selected Tab. 
    setSelectedTabColor(); 
} 

एक विधि है कि Tab की Selected और Unselected रंग सेट हो जाएगा बनाने के लिए।

private void setSelectedTabColor() { 
     for(int i=0;i<tabHost.getTabWidget().getChildCount();i++) 
     { 
      tabHost.getTabWidget().getChildAt(i) 
              .setBackgroundColor(Color.WHITE); 
     } 
     tabHost.getTabWidget().getChildAt(tabHost.getCurrentTab()) 
               .setBackgroundColor(Color.RED); 
    } 

फिर आपके onTabChanged() के अंदर आप पृष्ठभूमि को गतिशील रूप से बदल सकते हैं।

@Override 
    public void onTabChanged(String tabId) { 
     setSelectedTabColor(); 
    } 

आप, selected और unselected टैब के लिए एक ही उपयोग कर सकते हैं here उसी के लिए ब्लॉग है।

+0

धन्यवाद, टाइप मिस्चैच: शून्य से कनवर्ट नहीं कर पा रहा है त्रुटि देखने में त्रुटि देखें देखें = myTabHost.getTabWidget()। GetChildAt (टैब) .setBackgroundColor (Color.CYAN); यह लाइन – Mercy

+0

उठने का अच्छा विचार .... अचयनित टैब के बारे में क्या? –

+0

@lalit कृपया मेरे प्रश्न को अपडेट करें – Mercy

2

setIndicator (देखें देखें) setIndicator (CharSequence लेबल, Drawable चिह्न) के बजाय का उपयोग करें। आपके द्वारा पारित दृश्य की पृष्ठभूमि सेटिंग (उदा। यदि आप पैरेंट लेआउट को एक्सएमएल कर रहे हैं) क्लिक को संभालने के लिए कलरस्टेटलिस्ट होना चाहिए।

संबंधित मुद्दे