我无法弄清楚如何更改API-21上不确定圆圈进度条的颜色。我确保我的colorAccent设置正确。我的理解是系统应该从colorAccent获取并相应地调整ProgressBar。知道会出现什么问题吗?
应用程序/ SRC /主/ RES /布局-V21 / fragment_story_comments.xml
<ProgressBar
android:id="@+id/progress_bar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:visibility="visible"/>
应用程序/ SRC /主/ RES /值/的themes.xml
<style name="AppTheme.Base" parent="Theme.AppCompat.NoActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:windowNoTitle">true</item>
</style>
应用程序/ SRC /主/ RES /值/ colors.xml
<color name="colorAccent">#ff5722</color>
<color name="colorPrimary">#ff5722</color>
<color name="colorPrimaryDark">#e64a19</color>
答案 0 :(得分:85)
注意:这仅适用于Android 5.0(Lollipop)及以上版本,符合原始请求。对于较旧的Android版本,您必须替换ProgressBar的progressDrawable。
根据Liam的回答,我设法使用indeterminateTint标志来处理XML。
显然要让它工作,你需要设置indeterminate和indeterminateTintMode标志。
这种模式对我来说有点神秘。我尝试了所有这些但只得到了src_in和src_atop的预期结果。我不知道这些模式究竟是做什么的,所以如果有人可以对此进行扩展,我将不胜感激。
无论如何,这应该有效:
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:indeterminate="true"
android:indeterminateTint="#F00"
android:indeterminateTintMode="src_in" />
答案 1 :(得分:20)
这适用于较低版本的Android:
if (progBar.getIndeterminateDrawable() != null) {
progBar.getIndeterminateDrawable().setColorFilter(getResources().getColor(R.color.accent), android.graphics.PorterDuff.Mode.SRC_IN);
}
答案 2 :(得分:11)
我设法将API 21上的ProgressBar的颜色从绿色改为白色,如下所示:
mProgressBar.getIndeterminateDrawable().setColorFilter(new LightingColorFilter(0xFF000000, 0xFFFFFF));
但是,我仍然无法弄清楚如何在XML中做到这一点,但希望这会对某人有所帮助。
答案 3 :(得分:6)
您应该为主题中的激活控件设置颜色:
<item name="colorControlActivated">@color/accent</item>
这仅适用于Android 5.0 +