2011-03-04 7 views
5

मैं एक TabLayout उपयोग कर रहा हूँ और मैं टैब है कि मैं उपयोग कर रहा हूँ के लिए कस्टम छवियों है, लेकिन मुझे के जीवन के लिए मैं समझ नहीं कैसे रंग या टैब और के बीच विभक्त की भी छवि बदलने के लिए टैब सामग्री मैंने setDividerDrawable() का उपयोग करने का प्रयास किया है, लेकिन जब मैं टैब सामग्री सेट करने से पहले इसे कॉल करता हूं तो यह दुर्घटनाग्रस्त हो जाता है और जब मैं इसे कॉल करता हूं तो कुछ भी नहीं करता है। अगर मैं इसे काला होने के लिए प्राप्त कर सकता हूं जो पर्याप्त होगा, लेकिन अभी तक कुछ भी काम नहीं किया है। किसी भी मार्गदर्शन के लिए धन्यवाद।एंड्रॉइड में टैबविड्ज डिवाइडर का रंग और/या ड्रायबल कैसे बदलूं?

उत्तर

9

आपको यह करना है: tabHost.getTabWidget()। SetDividerDrawable (R.drawable.tab_divider);

कहाँ R.drawable.tab_divider अपने संसाधनों निर्देशिका में एक छवि है।

लेकिन कुंजी आपको क्या करना है है इससे पहले कि आप टैब की मेजबानी के लिए कोई टैब से जोड़ा है।

मेरे टैब प्रवर्तन कोड लगता है:

private void initializeTabs(int curTab) { 
    this.tabHost = getTabHost(); 
    tabHost.clearAllTabs(); 

    TabSpec ts1, ts2, ts3, ts4, ts5; 
    // tab separator 
    tabHost.getTabWidget().setDividerDrawable(R.drawable.tab_divider); 

    ts1 = this.setupTab(new TextView(this), tabHost, R.drawable.browse_tab_normal, 
      mResources.getString(R.string.Browse)); 

    ts2 = this.setupTab(new TextView(this), tabHost, R.drawable.search_tab_normal, 
      mResources.getString(R.string.Search)); 

    ts3 = this.setupTab(new TextView(this), tabHost, R.drawable.postad_tab_normal, 
      mResources.getString(R.string.Post)); 

    ts4 = this.setupTab(new TextView(this), tabHost, R.drawable.watchlist_tab_normal, 
      mResources.getString(R.string.WatchList)); 

    ts5 = this.setupTab(new TextView(this), tabHost, R.drawable.managead_tab_normal, 
      mResources.getString(R.string.Login)); 

    // intents 
    ts1.setContent(new Intent().setClass(this, BrowseTabActivity.class)); 
    ts2.setContent(new Intent().setClass(this, SearchTabActivity.class)); 
    ts3.setContent(new Intent().setClass(this, PostAdTabActivity.class)); 
    ts4.setContent(new Intent().setClass(this, WatchlistTabActivity.class)); 
    ts5.setContent(new Intent().setClass(this, LoginTabActivity.class)); 

    tabHost.addTab(ts1); 
    tabHost.addTab(ts2); 
    tabHost.addTab(ts3); 
    tabHost.addTab(ts4); 
    tabHost.addTab(ts5); 

...

+0

जवाब ठीक है, लेकिन मैं एक रंग के बजाय एक छवि एक ही कोड के साथ सेट कर सकते हैं कि कैसे। धन्यवाद! – benoffi7

0

बेहतर तरीका एक विभक्त परिभाषित करने के लिए अपने XML मार्कअप से अगर बनाना है:

<TabWidget 
    android:layout_width="match_parent" 
    android:showDividers="middle" 
    android:divider="@drawable/design_tab_divider"> 
</TabWidget> 

तो, आप मार्कअप से सिर्फ एक ड्रॉइंग को परिभाषित कर सकते हैं। ध्यान दें कि आपको android:divider का उपयोग android:showDividers="middle" के साथ टैब के बीच डिवाइडर रखने के लिए करना चाहिए। अधिक कल्पना पढ़ सकते हैं और गुण पर ध्यान देना के लिए LinearLayout से विरासत में मिली - docs in google

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