ViewPagerIndicator的TabPageIndicator的默认样式失败。 为什么和如何解决?

如果我只是向你展示,不要解释这个问题,

无标题的标题标题

正如你所看到的标签标题都混在一起,完全没有风格。 它们在滑动切换标签时正常工作(尽pipe除了位置偏移之外没有可见的指示),点击标签切换视图,但所有样式都丢失。 这里是代码:

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) } } 

而已。 现在,除非阅读文档和检查样本,否则我很困惑,我不应该采取任何额外的步骤来使用默认样式。 我有点不知所措

Solutions Collecting From Web of "ViewPagerIndicator的TabPageIndicator的默认样式失败。 为什么和如何解决?"

我有同样的问题,但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> 

我觉得自己有点儿白痴,但这是非常简单明显的解决办法。

AndroidManifest.xml中

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

是的,我所需要做的就是使用这个主题。 希望这会帮助其他一些可怜的迷失的灵魂。

Michaels解决scheme的一小部分:如果您已经为自己的Activity使用了自定义主题,只需将这两行添加到它:

 <item name="vpiIconPageIndicatorStyle">@style/Widget.IconPageIndicator</item> <item name="vpiTabPageIndicatorStyle">@style/Widget.TabPageIndicator</item>