我正在尝试将主题应用于应用程序中的所有进度条。在清单中,我应用了一个名为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>
答案 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>