如何引用ViewPagerIndicator库中定义的主题样式?

时间:2016-06-24 23:37:26

标签: android android-viewpager viewpagerindicator

我在构建gradle中使用ViewPageIndicator。我觉得ViewPageIndicator样式文件中提供的主题不适合我。

所以我想去主题文件目的地进行一些修改,因此它符合我的需要。但是,Android Studio弹出通知说无法找到声明。

任何人都知道如何修复它?

2 个答案:

答案 0 :(得分:1)

我通过引用自定义应用主题中的特定库样式解决了这个问题。如果你看source code of ViewPageIndicator 你会看到可以覆盖指标样式的钩子:

  • vpiIconPageIndicatorStyle
  • vpiCirclePageIndicatorStyle
  • ...

这些是Widget样式的基本参考。例如,对于 CirclePageIndicator ,您应该扩展Widget主题并将其链接到 vpiCirclePageIndicatorStyle 。然后,您可以设置所有Widget属性以及您可以在attributes中找到的自定义CirclePageIndicator属性。

关于ViewPagerindicator的主题文件(styles.xml):

<style name="BaseTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="vpiCirclePageIndicatorStyle">@style/Widget.CirclePageIndicator</item>
    ...
</style>

 <style name="Widget.CirclePageIndicator" parent="Widget">
    <item name="android:layout_marginBottom">10dp</item>
    <item name="android:layout_marginTop">5dp</item>
    <item name="android:padding">3dp</item>
    <item name="fillColor">@color/borders</item>
    <item name="gapWidth">@dimen/view_pager_circle_page_indicator_gap</item>
    <item name="radius">@dimen/view_pager_circle_page_indicator_radius</item>
    <item name="strokeColor">@color/borders</item>
    <item name="strokeWidth">@dimen/view_pager_circle_page_indicator_stroke</item>
</style>

在布局xml中,无需指定 style =&#34; @style /..." 属性。

<com.viewpagerindicator.CirclePageIndicator
      android:id="@+id/pagerIndicator"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"/>

最终结果:enter image description here

答案 1 :(得分:0)

我刚刚找到了这个问题的答案。我们可以使用Android提供的设计工具来定位我们项目中存在的任何主题文件。首先打开任何布局文件并切换到设计视图。接下来,选择要查看的主题布局,然后单击“提取资源”按钮以提取资源并为其创建名称。完成后,您将看到您刚刚命名的样式出现在样式文件中。但是现在,这个样式文件仍然指向原始库文件,因此我们只能查看它,但不允许对其进行任何修改。只要我们能够阅读它,我们就可以将其复制并粘贴到其他地方。因此我们应该复制内部代码以粘贴我们创建的文件(文件名不能与原始文件名相同)。解决方案是先访问所有原始文件,然后将其复制并粘贴到新文件中。然后将您的主题引用到您刚刚创建的文件中。您可以随时随地对创建的文件进行修改。 enter image description here