2012-08-08 3 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

アグフ、私はこのタブを開いていましたが、それを読むことはありませんでした。最後に自分自身をテーマにしていたが、時間を節約できた。 – 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

私は実際に似たような問題に遭遇し、同様のことをしました。私は可能なところでホロのテーマを使いたかったので、別のフォルダres/values-v11を、あなたのケースでは "Theme.Holo.Light"となるparent = "Theme.Holo"を設定するstyle.xmlで作る必要がありました。 。 –

+1

ありがとうございます! ViewPagerIndicatorの仕組みをどのように動作させるか、それをカスタマイズする方法を理解するのにどれくらいの時間がかかりますか... StackOverflowやあなたたちのためでなければ、自分自身で試行錯誤して死にます。 – Terry

5

マイケルズ溶液に少量の添加:あなたはすでにあなたの活動のためのカスタムテーマを使用している場合には、それにtheeseの2行を追加します。

<item name="vpiIconPageIndicatorStyle">@style/Widget.IconPageIndicator</item> 
<item name="vpiTabPageIndicatorStyle">@style/Widget.TabPageIndicator</item> 
関連する問題