2012-08-08 6 views
16

इसके बजाय अगर मैं सिर्फ तुम्हें दिखाता हूँ:डिफ़ॉल्ट स्टाइल ViewPagerIndicator के TabPageIndicator के लिए विफल रहता है। क्यों और कैसे ठीक करें? मुद्दा है, बहुत आसान है समझाने का

Unstyled Tab Titles

आप देख सकते हैं टैब खिताब सब एक साथ और पूरी तरह से unstyled मैश्ड कर रहे हैं। वे स्विचेस टैब के माध्यम से उस स्वाइपिंग में सही ढंग से कार्य करते हैं (हालांकि उचित स्थान स्थानांतरित करने के अलावा कोई दृश्य संकेत नहीं है) और टैब टैप करने से दृश्य स्विच हो जाता है, लेकिन सभी शैली गुम होती है।

gallerylists.xml

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <com.viewpagerindicator.TabPageIndicator 
    android:id="@+id/indicator" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" /> 

    <android.support.v4.view.ViewPager 
    android:id="@+id/gallerypager" 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1" /> 

</LinearLayout> 

GalleryLists.java

public class GalleryLists extends Activity { 
    Context context; 

    private static final String[] titles = new String[] { 
     "20 Hottest", "20 Worst", "20 Awesomest", "MMA", "Comedy", "Moto", "Games" }; 

    ViewPager listPager; 
    ListPagerAdapter listPagerAdapter; 

    PageIndicator indicator; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.gallerylists); 

    context = this; 

    listPagerAdapter = new ListPagerAdapter(); 

    ViewPager.OnPageChangeListener changeListener = new ViewPager.OnPageChangeListener() { 

     @Override 
     public void onPageScrolled(int i, float v, int i1) {} 

     @Override 
     public void onPageSelected(int i) {} 

     @Override 
     public void onPageScrollStateChanged(int i) {} 
    }; 

    listPager = (ViewPager) findViewById(R.id.gallerypager); 
    listPager.setAdapter(listPagerAdapter); 
    listPager.setOnPageChangeListener(changeListener); 

    indicator = (TabPageIndicator) findViewById(R.id.indicator); 
    indicator.setViewPager(listPager); 
    indicator.setOnPageChangeListener(changeListener); 
    } 

    private class ListPagerAdapter extends PagerAdapter { 

    // Not important (I believe) 
    } 
} 

यह है कि: यहाँ कोड है। अब, जब तक कि मैं दस्तावेज पढ़ने और नमूने की जांच करने के बावजूद बहुत उलझन में हूं, मुझे डिफ़ॉल्ट शैली का उपयोग करने के लिए कोई अतिरिक्त कदम नहीं उठाना चाहिए। मैं थोड़ी देर के नुकसान में हूँ।

उत्तर

11

मुझे एक मूर्खता की तरह लगता है, लेकिन यहां बहुत सरल और स्पष्ट समाधान है।

AndroidManifest.xml

... 
<activity 
    android:name=".GalleryLists" 
    android:theme="@style/Theme.PageIndicatorDefaults" 
    ... > 
</activity> 
... 

हाँ, सब मुझे क्या करना की जरूरत वास्तव में उपयोग विषय था। उम्मीद है कि यह कुछ अन्य गरीब खो आत्मा की मदद करेगा।

+0

Agggh, मेरे पास यह टैब खुला था लेकिन इसे कभी नहीं पढ़ा! आखिर में खुद को थीमिंग का पता लगाया लेकिन समय बचा सकता था। – georgiecasey

27

मुझे एक ही समस्या है, लेकिन android:theme="@style/Theme.PageIndicatorDefaults" मेरे ऐप थीम के साथ गठबंधन नहीं करता है।

, एक और तरीका निजीकृत करने के लिए नहीं है res/values/style.xml अधिलेखन:

<resources> 

    <style name="AppTheme" parent="android:Theme.Light" > 
     <item name="vpiTabPageIndicatorStyle">@style/CustomTabPageIndicator</item> 

    </style> 

    <style name="CustomTabPageIndicator" > 
     <item name="android:gravity">center</item> 
     <item name="android:background">@drawable/vpi__tab_indicator</item>   
     <item name="android:paddingTop">12dp</item> 
     <item name="android:paddingBottom">12dp</item> 
     <item name="android:textAppearance">@style/TextAppearance.TabPageIndicator</item> 
     <item name="android:textSize">15sp</item> 
     <item name="android:maxLines">1</item> 
     <item name="android:textColor">#FF555555</item> 
    </style> 
</resources> 
+1

मैं वास्तव में एक समान मुद्दे में भाग गया और कुछ ऐसा ही किया। मैं उपलब्ध होलो थीम का उपयोग करना चाहता था, इसलिए मुझे एक style.xml के साथ एक और फ़ोल्डर res/values-v11 बनाने की आवश्यकता थी जहां मैंने पैरेंट = "थीम.होलो" सेट किया था जो आपके मामले में "थीम.होलो.लाइट" । –

+1

इसके लिए बहुत बहुत धन्यवाद! यह भयानक है कि ViewPagerIndicator सामग्री को कैसे काम करना है और इसे कैसे अनुकूलित करना है, यह जानने में कितना समय लगता है ... यदि यह स्टैक ओवरफ्लो और आप लोगों के लिए नहीं था, तो मैं खुद को मौत की कोशिश करता हूं और त्रुटि करता हूं। – Terry

5

माइकल्स समाधान के लिए एक छोटा सा अतिरिक्त: मामले में आप पहले से ही अपनी गतिविधि के लिए एक कस्टम विषय का उपयोग कर रहे हैं, बस यह करने के लिए इन दो पंक्तियां जोड़ें:

<item name="vpiIconPageIndicatorStyle">@style/Widget.IconPageIndicator</item> 
<item name="vpiTabPageIndicatorStyle">@style/Widget.TabPageIndicator</item> 
संबंधित मुद्दे