如何应用ProgressBarStyle?

时间:2018-11-13 16:01:06

标签: android android-manifest android-theme android-progressbar

我正在尝试将主题应用于应用程序中的所有进度条。在清单中,我应用了一个名为AppTheme的自定义主题。在这种样式中,我添加了一个额外的progressBarStyle项,如下所示:

<style name="AppTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
    ...
    <item name="android:progressBarStyle">@style/my_progress_bar</item>
</style>

然后我定义自定义栏进度样式:

<style name="my_progress_bar" parent="Base.Widget.AppCompat.ProgressBar">
    <item name="android:indeterminateTint">@color/app_black</item>
    <item name="android:indeterminateTintMode">src_in</item>
</style>

如果我将此样式应用于各个ProgressBar视图,则可以使用,但是我想通过AppTheme在清单中应用它,这样就不必为应用程序中的每个进度栏都指定相同的tint和tintMode。我正在使用运行API 25的设备。

我在做什么错?感谢您的任何见识。

编辑:经过进一步调查,由于某种原因,将样式添加到AppTheme不会传播到清单。如果我完全用进度条样式替换AppTheme,则可以使用。但是我仍然需要AppTheme中定义的样式。 这有效:     <application ... android:theme="@style/my_progress_bar">

但这不是:     <application ... android:theme="@style/AppTheme">

有趣的是,如果我删除了AppTheme中除定义的进度条样式外的所有内容,它将无法正常工作。 android中是否存在嵌套样式的错误?我将清单传递给此AppTheme时,清单没有看到定义的progressBarStyle:

<style name="AppTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
    <item name="android:progressBarStyle">@style/my_progress_bar</item>
</style>

1 个答案:

答案 0 :(得分:0)

清单文件中,您具有以下内容:

<application
        android:name="app"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme">

.......
</application>

将以下内容添加到您的 style.xml 文件中的AppTheme中:

<style name="AppTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
        <!--This will change the color of your progress bar throughout the whole app-->
        <item name="colorControlActivated">@color/app_black</item>
</style>