5

मैं कस्टम टैब स्टाइल के लिए होलो थीम को ओवरराइड करने के लिए दिनों के लिए प्रयास कर रहा हूं, लेकिन मेरे परिवर्तनों का कोई प्रभाव नहीं पड़ता है।मेरा कस्टम 'actionBarTabStyle' डिफ़ॉल्ट शैली/थीम को ओवरराइड क्यों नहीं करता है?

यहाँ मेरी styles.xml

<!-- the theme applied to the application or activity --> 
<style name="CustomActionBarTheme" parent="@android:style/Theme.Holo"> 
    <item name="android:tabWidgetStyle">@style/MyActionBarTabs</item> 
</style> 

<!-- ActionBar tabs styles --> 
<style name="MyActionBarTabs" parent="@android:style/Widget.Holo.ActionBar.TabView"> 

    <!-- tab indicator --> 
    <item name="android:background">@drawable/tabselector</item> 
</style>> 

है यह मेरा tabselector.xml है

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <!-- Non focused states --> 
    <item android:drawable="@drawable/tab_unselected_holo" android:state_focused="false" android:state_pressed="false" android:state_selected="false"/> 
    <item android:drawable="@drawable/tab_selected_holo" android:state_focused="false" android:state_pressed="false" android:state_selected="true"/> 

    <!-- Focused states --> 
    <item android:drawable="@drawable/tab_unselected_focused_holo" android:state_focused="true" android:state_pressed="false" android:state_selected="false"/> 
    <item android:drawable="@drawable/tab_selected_focused_holo" android:state_focused="true" android:state_pressed="false" android:state_selected="true"/> 

    <!-- Pressed --> 
    <!-- Non focused states --> 
    <item android:drawable="@drawable/tab_unselected_pressed_holo" android:state_focused="false" android:state_pressed="true" android:state_selected="false"/> 
    <item android:drawable="@drawable/tab_selected_pressed_holo" android:state_focused="false" android:state_pressed="true" android:state_selected="true"/> 

    <!-- Focused states --> 
    <item android:drawable="@drawable/tab_unselected_pressed_holo" android:state_focused="true" android:state_pressed="true" android:state_selected="false"/> 
    <item android:drawable="@drawable/tab_selected_pressed_holo" android:state_focused="true" android:state_pressed="true" android:state_selected="true"/> 

</selector> 

मैं अपने गतिविधि में TabHost का उपयोग करके टैब जोड़ दिया है और अपने लेआउट इस

<android.support.v4.app.FragmentTabHost xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/tabhost" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" > 

     <TabWidget 
      android:id="@android:id/tabs" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="0" 
      android:orientation="horizontal" /> 

     <FrameLayout 
      android:id="@android:id/tabcontent" 
      android:layout_width="0dp" 
      android:layout_height="0dp" 
      android:layout_weight="0" /> 

     <FrameLayout 
      android:id="@+id/realtabcontent" 
      android:layout_width="match_parent" 
      android:layout_height="0dp" 
      android:layout_weight="1" /> 
    </LinearLayout> 

</android.support.v4.app.FragmentTabHost> 
तरह लग रहा है

मैंने Android Developer Page

के उदाहरणों का पालन किया है

मेरे टैब अभी भी वही दिखते हैं। मेरे टैब संकेतक गुलाबी रंग का मेरा कस्टम रंग माना जाता है। हालांकि, कोई बदलाव नहीं है, वे अभी भी नीले हैं।

बातें ध्यान रखें:

  1. मेरे मैनिफ़ेस्ट फ़ाइल अपने आवेदन टैग में अद्यतन विषय का संदर्भ
  2. (मूल्यों, मूल्यों v11, मूल्यों-v14)
  3. मेरे styles.xml प्रत्येक मान फ़ोल्डर में अद्यतन किया जाता है
  4. यह सब किया था मेरी ic_launcher छवि और शीर्षक

मैं क्या याद आ रही है या गलत कर के साथ अपने आवेदन के शीर्ष पर एक कार्रवाई बार जोड़ने था? किसी भी मदद की सराहना करते हैं। आप सभी को धन्यवाद!

उत्तर

5

ActionBar में टैब TabHost में टैब की तुलना में एक अलग थीम का उपयोग करते हैं।

आपको केवल android:actionBarTabStyle से android:tabWidgetStyle में परिवर्तन करना है।

पूर्ण उदाहरण

<style name="Your.Theme" parent="@android:style/Theme.Holo.Light.DarkActionBar"> 
    <item name="android:tabWidgetStyle">@style/Your.TabWidget</item> 
</style> 

<style name="Your.TabWidget" parent="@android:style/Widget.Holo.TabWidget"> 
    <item name="*android:tabLayout">@layout/your_tab_layout</item> 
</style> 

<style name="Your.Tab" parent="@android:style/Widget.Holo.ActionBar.TabView"> 
    <item name="android:background">@drawable/your_tab_indicator</item> 
    <item name="android:layout_width">0dip</item> 
    <item name="android:layout_weight">1</item> 
    <item name="android:minWidth">80dip</item> 
</style> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    style="@style/Your.Tab" 
    android:layout_height="?android:attr/actionBarSize" 
    android:orientation="horizontal" > 

    <ImageView 
     android:id="@android:id/icon" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_vertical" 
     android:visibility="gone" /> 

    <TextView 
     android:id="@android:id/title" 
     style="@android:style/Widget.Holo.ActionBar.TabText" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_vertical" 
     android:maxWidth="180dip" /> 

</LinearLayout> 

हालांकि, android:tabLayout एक सार्वजनिक विशेषता नहीं है (इसलिए *)। Google इस तरह की शैली बनाने की अनुशंसा नहीं करेगा और इसके बजाय संकेतक को गतिशील रूप से संशोधित करने का सुझाव देगा। तो, कुछ इस तरह:

final TabWidget tabWidget = tabHost.getTabWidget(); 
    for (int i = 0; i < tabWidget.getTabCount(); i++) { 
     final View tab = tabWidget.getChildTabViewAt(i); 
     tab.setBackground(getResources().getDrawable(R.drawable.your_tab_indicator)); 
    } 

परिणाम

Example

+0

त्वरित प्रतिक्रिया के लिए धन्यवाद। वह किया। यह निश्चित रूप से टैब के नीचे बाल रेखा के साथ कुछ बदल गया ... हालांकि, नीली सूचक रंग अभी भी वहां है। मुझे लगता है कि मैं नीले रंग के नीचे गुलाबी छुपा देख सकता हूं ... लेकिन यह अभी भी ओवरलैपिंग है। –

+0

अपने सुझाव –

+0

@MarkBarrasso में संपादन को प्रदर्शित करने के लिए style.xml में अपना कोड अपडेट किया गया मैंने एक पूर्ण उदाहरण के साथ एक संपादन किया। – adneal

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