我在Android上使用循环进度条。我希望改变这个颜色。我正在使用
"?android:attr/progressBarStyleLargeInverse"
式。那么如何改变进度条的颜色。
如何定制风格?此外,风格的定义是什么?
答案 0 :(得分:137)
在res / drawable文件夹中,输入:
progress.xml
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:pivotX="50%"
android:pivotY="50%"
android:fromDegrees="0"
android:toDegrees="360">
<shape
android:shape="ring"
android:innerRadiusRatio="3"
android:thicknessRatio="8"
android:useLevel="false">
<size
android:width="76dip"
android:height="76dip" />
<gradient
android:type="sweep"
android:useLevel="false"
android:startColor="#447a29"
android:endColor="#00ffffff"
android:angle="0"/>
</shape>
</rotate>
根据您的选择设置startColor
和endColor
。
现在在progress.xml
的背景中设置ProgressBar
。
<ProgressBar
android:id="@+id/ProgressBar01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:indeterminateDrawable="@drawable/progress"
/>
答案 1 :(得分:128)
1.首先在资源
下的可绘制文件夹中创建一个xml文件命名为“progress.xml”
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="360" >
<shape
android:innerRadiusRatio="3"
android:shape="ring"
android:thicknessRatio="8"
android:useLevel="false" >
<size
android:height="76dip"
android:width="76dip" />
<gradient
android:angle="0"
android:endColor="color/pink"
android:startColor="@android:color/transparent"
android:type="sweep"
android:useLevel="false" />
</shape>
</rotate>
2.然后使用以下片段进行进度条
<ProgressBar
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/relativeLayout1"
android:layout_centerHorizontal="true"
android:layout_marginBottom="20dp"
android:indeterminate="true"
android:indeterminateDrawable="@drawable/progress" />
答案 2 :(得分:99)
对于API 21及更高版本。只需设置indeterminateTint属性即可。像:
android:indeterminateTint="@android:color/holo_orange_dark"
支持pre-API 21设备:
mProgressSpin.getIndeterminateDrawable()
.setColorFilter(ContextCompat.getColor(this, R.color.colorPrimary), PorterDuff.Mode.SRC_IN );
答案 3 :(得分:64)
您可以使用以下代码以编程方式更改颜色:
ProgressBar v = (ProgressBar) findViewById(R.id.progress);
v.getIndeterminateDrawable().setColorFilter(0xFFcc0000,
android.graphics.PorterDuff.Mode.MULTIPLY);
如果您想更改ProgressDialog的进度条颜色,可以使用:
mDilog.setOnShowListener(new OnShowListener() {
@Override
public void onShow(DialogInterface dialog) {
ProgressBar v = (ProgressBar)mDilog.findViewById(android.R.id.progress);
v.getIndeterminateDrawable().setColorFilter(0xFFcc0000,
android.graphics.PorterDuff.Mode.MULTIPLY);
}
});
答案 4 :(得分:35)
要添加到Dato的答案,我发现SRC_ATOP是一个更好的过滤器,因为它更好地支持alpha通道。
ProgressBar v = (ProgressBar) findViewById(R.id.progress);
v.getIndeterminateDrawable().setColorFilter(0xFFcc0000, android.graphics.PorterDuff.Mode.SRC_ATOP);
答案 5 :(得分:23)
机器人:indeterminateTint = “@颜色/进度”
答案 6 :(得分:11)
这对我有用。
<ProgressBar
android:id="@+id/ProgressBar01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:indeterminateTint="@color/black"/>
答案 7 :(得分:11)
styles.xml
var data = [{"act_id":418,"act_title":" Discovery","act_type":1,"act_info":"discovery.com","session_seconds":null,"no_students":null},{"act_id":25626,"act_title":"www.youtube.com","act_type":1,"act_info":"www.youtube.com","session_seconds":null,"no_students":null}]
var requiredData = data.map(function(item){
return [item.act_title, item.act_type];
})
答案 8 :(得分:11)
要自定义循环ProgressBar,我们需要创建 indeterminateDrawable 以显示自定义进度条
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:duration="1">
<shape
android:innerRadiusRatio="3"
android:shape="ring"
android:thicknessRatio="8"
android:useLevel="false">
<size
android:height="48dip"
android:width="48dip" />
<gradient
android:centerColor="#f96047"
android:centerY="0.50"
android:endColor="#fb9c8d"
android:startColor="#f72d0c"
android:type="sweep"
android:useLevel="false" />
</shape>
</rotate>
我们需要在进度条中包含drawable,如下所示:
<ProgressBar
android:layout_width="wrap_content"
android:layout_centerInParent="true"
style="?android:attr/progressBarStyleLarge"
android:visibility="visible"
android:progressDrawable="@drawable/widget_progressbar"
android:indeterminateDrawable="@drawable/widget_progressbar"
android:layout_height="wrap_content" />
答案 9 :(得分:8)
android:indeterminateTint="@color/yellow"
这对我来说是工作,只需将此行添加到您的progressBar xml代码中
答案 10 :(得分:7)
对我来说主题不适用于accentColor。但它确实适用于colorControlActivated
<style name="Progressbar.White" parent="AppTheme">
<item name="colorControlActivated">@color/white</item>
</style>
<ProgressBar
android:layout_width="@dimen/d_40"
android:layout_height="@dimen/d_40"
android:indeterminate="true"
android:theme="@style/Progressbar.White"/>
答案 11 :(得分:4)
尝试使用样式并设置colorControlActivated太需要的ProgressBar颜色。
<style name="progressColor" parent="Widget.AppCompat.ProgressBar">
<item name="colorControlActivated">@color/COLOR</item>
</style>
然后将ProgressBar的主题设置为新样式。
<ProgressBar
android:id="@+id/progress_bar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:theme="@style/progressColor"
/>
答案 12 :(得分:4)
<style name="progressColor" parent="Widget.AppCompat.ProgressBar">
<item name="colorControlActivated">@color/colorPrimary</item>
</style>
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="250dp"
android:theme="@style/progressColor"
android:layout_height="250dp"
android:layout_centerInParent="true" />
答案 13 :(得分:3)
添加到您的活动主题,项目 colorControlActivated ,例如:
<style name="AppTheme.NoActionBar" parent="Theme.AppCompat.Light.NoActionBar">
...
<item name="colorControlActivated">@color/rocket_black</item>
...
</style>
将此样式应用于清单中的活动:
<activity
android:name=".packege.YourActivity"
android:theme="@style/AppTheme.NoActionBar"/>
答案 14 :(得分:2)
您可以非常轻松地使用自定义对话框执行此操作,从其他答案重用xml:
<?xml version="1.0" encoding="utf-8"?>
<shape
android:innerRadiusRatio="3"
android:shape="ring"
android:thicknessRatio="8"
android:useLevel="false" >
<size
android:height="76dip"
android:width="76dip" />
<gradient
android:angle="0"
android:endColor="@color/oceanBlue"
android:startColor="@android:color/transparent"
android:type="sweep"
android:useLevel="false" />
</shape>
这样做:
public static class ModifiedProgressDialog extends ProgressDialog {
public ModifiedProgressDialog(Context context) {
super(context);
}
@Override
public void show() {
super.show();
setIndeterminateDrawable(getContext().getResources().getDrawable(R.drawable.blue_progress));
}
}
答案 15 :(得分:1)
您可以使用如下样式更改进度颜色
componentDidMount()
并按如下所示在ProgressBar中使用它
<style name="AppTheme.anyName">
<item name="colorAccent">YOUR_COLOR</item>
</style>
希望有帮助。
答案 16 :(得分:1)
借助材料组件库,您可以使用具有以下属性的 CircularProgressIndicator
:
indicatorColor
trackColor
<com.google.android.material.progressindicator.CircularProgressIndicator
android:indeterminate="true"
app:trackColor="@color/..."
app:indicatorSize="90dp"
app:indicatorColor="@color/..."
/>
答案 17 :(得分:0)
对于那些想知道如何提高自定义进度速度的人
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:pivotX="50%" android:pivotY="50%" android:fromDegrees="0"
android:toDegrees="1080"><!--HERE YOU COULD INCREASE SPEED BY SETTING TODEGRESS(1080 is 3 loops instead of 1 in same amt of time)-->
<shape android:shape="ring" android:innerRadiusRatio="3"
android:thicknessRatio="8" android:useLevel="false">
<size android:width="76dip" android:height="76dip" />
<gradient android:type="sweep" android:useLevel="false"
android:startColor="#447a29"
android:endColor="#447a29"
android:angle="0"
/>
</shape>
答案 18 :(得分:0)
以补充Muhamed Riyas M's最高投票答案:
快速旋转
android:toDegrees="1080"
细环
android:thicknessRatio="16"
浅白色
android:endColor="#80ffffff"
答案 19 :(得分:0)
检查此answer:
对我来说,必须有这两行才能起作用并更改颜色:
android:indeterminateTint="@color/yourColor"
android:indeterminateTintMode="src_in"
PS:但仅可用于android 21
答案 20 :(得分:0)
它从Res / Values / Colors.xml-> colorAccent中获取颜色值 如果更改它,progressBar的颜色也会改变。
答案 21 :(得分:0)
设置android:indeterminateDrawable="@drawable/progress_custom_rotate"
使用以下代码自定义圆环进度条
复制以下代码,并在Drawable文件夹中创建“ progress_custom_rotate.xml”
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:pivotX="50%" android:pivotY="50%" android:fromDegrees="0"
android:toDegrees="1080">
<shape android:shape="ring" android:innerRadiusRatio="3"
android:thicknessRatio="8" android:useLevel="false">
<size android:width="48dip" android:height="48dip" />
<gradient android:type="sweep" android:useLevel="false"
android:startColor="#4c737373" android:centerColor="#4c737373"
android:centerY="0.50" android:endColor="#ffffd300" />
</shape>
</rotate>
答案 22 :(得分:0)
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/black</item>
<item name="colorPrimaryDark">@color/white</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="progressColor" parent="Widget.AppCompat.ProgressBar">
<item name="colorControlActivated">@color/black</item>
</style>
</resources>
<ProgressBar
android:id="@+id/progressBar2"
style="?android:attr/progressBarStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:theme="@style/progressColor"
app:layout_constraintBottom_toBottomOf="@+id/textView3"
app:layout_constraintStart_toEndOf="@+id/textView3"
app:layout_constraintTop_toTopOf="@+id/textView3" />