未找到样式vpiCirclePageIndicatorStyle。

20

我想在我的项目中使用viewpageindicator,但导入它时遇到了问题。我的XML文件出现了错误。

Missing styles. Is the correct theme chosen for this layout?
Use the Theme combo box above the layout to choose a different layout, or fix the theme style references.

Failed to find style 'vpiCirclePageIndicatorStyle' in current theme

我的 XML 文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >


    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />

    <com.viewpagerindicator.CirclePageIndicator
        android:id="@+id/indicator"
        android:layout_width="248dp"
        android:layout_height="30dp"
        android:layout_alignParentBottom="true"
        android:layout_below="@id/pager"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="30dp"
        android:padding="3dip" />


</RelativeLayout>

我的更新后的res/values/styles.xml

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">

    <style name="hololightnoactionbar" parent="android:Theme.Holo.Light">
        <item name="android:windowActionBar">false</item>
        <item name="android:windowNoTitle">true</item>
    </style>

    <style name="dividerstyle" parent="@android:style/Widget.ListView">
        <item name="android:cacheColorHint">@android:color/transparent</item>
        <item name="android:divider">@drawable/list_divider</item>
        <item name="android:dividerHeight">1px</item>
    </style>

    <style name="roundedwhitebox">
        <item name="android:background">@drawable/roundedwhitebox</item>
    </style>

    <style name="roundedlightgraybox">
        <item name="android:background">@drawable/roundedlightgraybox</item>
    </style>

    <style name="rotatingProgressCircle">
        <item name="android:indeterminateDrawable">@drawable/circleindeterminate</item>
    </style>

    <style name="StyledIndicators" parent="@android:style/Theme.Light">
        <item name="vpiCirclePageIndicatorStyle">@style/CustomCirclePageIndicator</item>
        <item name="vpiLinePageIndicatorStyle">@style/CustomLinePageIndicator</item>
        <item name="vpiTitlePageIndicatorStyle">@style/CustomTitlePageIndicator</item>
        <item name="vpiTabPageIndicatorStyle">@style/CustomTabPageIndicator</item>
        <item name="vpiUnderlinePageIndicatorStyle">@style/CustomUnderlinePageIndicator</item>
    </style>

    <style name="CustomTitlePageIndicator">
        <item name="android:background">#18FF0000</item>
        <item name="footerColor">#FFAA2222</item>
        <item name="footerLineHeight">1dp</item>
        <item name="footerIndicatorHeight">3dp</item>
        <item name="footerIndicatorStyle">underline</item>
        <item name="android:textColor">#AA000000</item>
        <item name="selectedColor">#FF000000</item>
        <item name="selectedBold">true</item>
    </style>

    <style name="CustomLinePageIndicator">
        <item name="strokeWidth">4dp</item>
        <item name="lineWidth">30dp</item>
        <item name="unselectedColor">#FF888888</item>
        <item name="selectedColor">#FF880000</item>
    </style>

    <style name="CustomCirclePageIndicator">
        <item name="fillColor">#FF888888</item>
        <item name="strokeColor">#FF000000</item>
        <item name="strokeWidth">2dp</item>
        <item name="radius">10dp</item>
        <item name="centered">true</item>
    </style>

    <style name="CustomTabPageIndicator" parent="Widget.TabPageIndicator">
        <item name="android:textAppearance">@style/CustomTabPageIndicator.Text</item>
        <item name="android:textColor">#FF555555</item>
        <item name="android:textSize">16sp</item>
        <item name="android:divider">@drawable/custom_tab_indicator_divider</item>
        <item name="android:dividerPadding">10dp</item>
        <item name="android:showDividers">middle</item>
        <item name="android:paddingLeft">8dp</item>
        <item name="android:paddingRight">8dp</item>
        <item name="android:fadingEdge">horizontal</item>
        <item name="android:fadingEdgeLength">8dp</item>
    </style>

    <style name="CustomTabPageIndicator.Text" parent="android:TextAppearance.Medium">
        <item name="android:typeface">monospace</item>
    </style>

    <style name="CustomUnderlinePageIndicator">
        <item name="selectedColor">#FFCC0000</item>
        <item name="android:background">#FFCCCCCC</item>
        <item name="fadeLength">1000</item>
        <item name="fadeDelay">1000</item>
    </style>

</resources>

我的项目结构在这里,其中vpilibrary是导入的viewpageindicator库。

enter image description here

有什么问题吗?如果需要更多文件进行调试,请告诉我。谢谢

备注:我的minsdkversion和targetsdkversion都是16

4个回答

16

问题: 问题

解决方案:

  1. res/layout/values/styles.xml中添加自定义样式。

您可以在这里找到一些示例。

<style name="StyledIndicators" parent="@android:style/Theme.Light">
    <item name="vpiCirclePageIndicatorStyle">@style/CustomCirclePageIndicator</item>
</style>

<style name="CustomCirclePageIndicator">
    <item name="fillColor">#000000</item>
    <item name="strokeColor">#000000</item>
    <item name="strokeWidth">1dp</item>
    <item name="radius">6dp</item>
    <item name="centered">true</item>
</style>
  1. 在你的活动中添加一个名为"StyledIndicators"的主题样式:

  2. <activity
        android:name=".YourActivity"
        android:theme="@style/StyledIndicators" >
    </activity>
    
  3. 之后只需要将主题更改为项目自带的主题,选择清单主题 - StyledIndicators。

输入图像描述


9

styles.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppTheme" parent="android:Theme.Light.NoTitleBar">
    <item name="vpiCirclePageIndicatorStyle">@style/CustomCirclePageIndicator</item>
</style>
<style name="CustomCirclePageIndicator">
    <item name="fillColor">#FF888888</item>
    <item name="strokeColor">#FF000000</item>
    <item name="strokeWidth">2dp</item>
    <item name="radius">10dp</item>
    <item name="centered">true</item>
</style>
</resources>

现在在您的清单文件中,

下添加主题属性。
<application
    android:icon="@drawable/icon"
    android:label="ViewPagerIndicator Sample"
    android:theme="@style/AppTheme" >

不要忘记添加

  android:theme="@style/AppTheme"

6
使用ViewPagerIndicator的活动需要在其主题中具有适当的样式。
此示例项目中,我展示了如何设置具有必要的vpiTabPageIndicatorStyle的自定义主题:
<?xml version="1.0" encoding="utf-8"?>
<resources>

        <style name="AppTheme" parent="@style/Theme.Sherlock.Light">
                <item name="vpiTabPageIndicatorStyle">@style/TabStyle</item>
        </style>

        <style name="TabStyle" parent="Widget.TabPageIndicator">
                <item name="android:textColor">#FF33AA33</item>
                <item name="android:textSize">14sp</item>
                <item name="android:textStyle">italic</item>
                <item name="android:paddingLeft">16dp</item>
                <item name="android:paddingRight">16dp</item>
                <item name="android:fadingEdge">horizontal</item>
                <item name="android:fadingEdgeLength">8dp</item>
        </style>

</resources>

相同的基本方法应该适用于vpiCirclePageIndicatorStyle,我想ViewPagerIndicator附带的示例代码中有一个例子。


我之前不知道这一点。谢谢。不过我将ViewPAgerIndicator的样例样式文件添加到我的样式xml中,但是它仍然丢失了。我猜我还是缺少某些组件,请检查我的更新样式xml文件,看是否存在遗漏。 - Daniel
1
@Daniel:请在您的清单文件中展示您的活动如何使用“StyledIndicators”。 - CommonsWare
1
我将这样的样式添加到了我的styles.xml文件中,然后卡住了好几个小时,直到我意识到我有多个styles.xml文件。需要在所有文件中添加。 - Adam Johns

0

要将自定义样式应用于圆形页面指示器,请直接在您的xml布局中添加style属性。

 <com.viewpagerindicator.CirclePageIndicator
        android:id="@+id/indicator"
        style="@style/CustomCirclePageIndicator"
        android:layout_height="wrap_content"
        android:padding="5dp"
        android:layout_width="fill_parent"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="20dp"/>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接