我在我的Activty中使用循环ProgressBar
。我的问题是它在我的页面上看不到,因为我的页面的BG颜色与ProgressBar相同。所以我怎样才能改变颜色ProgressBar 使其正常可见?
请帮忙
答案 0 :(得分:44)
请创建一个xml文件名progress.xml并将其放在res / xml文件夹中,并在该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="#447a29"
android:angle="0"
/>
</shape>
</rotate>
创建此xml文件后,将progressbars背景设置为此xml ..
<ProgressBar
android:id="@+id/ProgressBar01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background = "@xml/progress">
答案 1 :(得分:27)
这是一个老问题,但这里没有提到使用主题。如果您的默认主题使用的是AppCompat
,那么您的ProgressBar
颜色将为您定义的colorAccent
。
更改colorAccent
也会更改ProgressBar
的颜色,但这些更改也会反映在多个地方。因此,如果您只想为特定ProgressBar
设置不同的颜色,则可以通过仅将主题应用于ProgressBar
来实现此目的:
扩展您的默认主题并覆盖colorAccent
<style name="AppTheme.WhiteAccent">
<item name="colorAccent">@color/white</item> <!-- Whatever color you want-->
</style>
在ProgressBar
中添加android:theme
属性:
android:theme="@style/AppTheme.WhiteAccent"
所以它看起来像这样:
<ProgressBar
android:id="@+id/loading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:padding="10dp"
android:theme="@style/AppTheme.WhiteAccent" />
因此,您只需更改特定colorAccent
的{{1}}。
注意:使用ProgressBar
无效。您只需要使用style
。
您可以在此处找到更多主题用法:https://plus.google.com/u/0/+AndroidDevelopers/posts/JXHKyhsWHAH
修改强>
以下是以编程方式更改ProgressBar颜色的代码。
android:theme
答案 2 :(得分:10)
最简单的方法是使用 android:indeterminateTint属性:
<ProgressBar
android:indeterminate="true"
android:indeterminateTint="@android:color/black"
........... />
答案 3 :(得分:1)
在xml中你可以像这样应用颜色
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/loader"
android:indeterminateTint="@color/my_color"
android:layout_centerInParent="true"/>
答案 4 :(得分:1)
创建进度可绘制文件
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background">
<shape>
<corners android:radius="5dip" />
<solid android:color="@color/colorWhite" />
</shape>
</item>
<item android:id="@android:id/secondaryProgress">
<clip>
<shape>
<corners android:radius="5dip" />
<solid android:color="@color/colorPrimary" />
</shape>
</clip>
</item>
<item android:id="@android:id/progress">
<clip>
<shape>
<corners
android:radius="5dip" />
<solid android:color="@color/colorPrimary" />
</shape>
</clip>
</item>
并设置 的机器人:progressDrawable =&#34; @可绘制/ app_progressbar_back&#34; 强>
像这样<ProgressBar
android:id="@+id/dialogProgressView"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:progressDrawable="@drawable/app_progressbar_back"
android:progress="50"
android:layout_marginTop="@dimen/margin_20" />
答案 5 :(得分:1)
然后粘贴这行代码:
android:indeterminateTint="@color/white"
上面的示例使您可以将进度条的颜色更改为白色。 现在,由您决定适应以您想要的颜色。
仅适用于Android API> = 21
答案 6 :(得分:0)
您也可以只更改属性
android:indeterminateDrawable="@drawable/yourxmlfile"
并保持这种风格
style="@android:style/Widget.ProgressBar.Small"
答案 7 :(得分:0)
这是你如何通过java代码来实现的。
progressBar.getProgressDrawable().setColorFilter(ContextCompat.getColor(getActivity(),R.color.product_status_color), PorterDuff.Mode.MULTIPLY)
答案 8 :(得分:0)
以下是一些解释。要更改Indeterminate ProgressBar
的背景,您需要旋转环,因为它会旋转。在@Chirag的回答中,他定义了一个旋转环并将其应用于ProgressBar
的背景。如果您有Horizontal ProgressBar
,则需要rectangle
。
PS:我没有尝试过其他形状。
答案 9 :(得分:0)
您还可以在活动中以编程方式更改进度条的颜色oncreate或您的片段onViewCreated()
pBar.getIndeterminateDrawable().setColorFilter(0xFFFF0000, android.graphics.PorterDuff.Mode.MULTIPLY);
此处应用的颜色为“0xFFFF0000”,为红色。您可以根据需要进行更改
答案 10 :(得分:0)
我正在使用android 2.3.1版本。我创建了一个名为progressbar的xml文件,并在布局进度条标记android:progressDrawable =“ @ drawable / progressbar”
中对其进行了调用
<item android:id="@+id/progress">
<clip>
<shape>
<gradient android:startColor="@color/textColor"
android:centerColor="@color/textColor"
android:endColor="@color/textColor"
android:gradientRadius="20dp"
>
</gradient>
</shape>
</clip>
</item>
答案 11 :(得分:0)
对我来说,必须有这两行才能起作用并更改颜色:
android:indeterminateTint="@color/yourColor"
android:indeterminateTintMode="src_in"
PS:但仅可用于android 21
答案 12 :(得分:0)
Chirag的答案是正确的,但并非全部。
我认为XML文件应如下所示:
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:indeterminateDrawable="@drawable/progress"/>
答案 13 :(得分:-1)
尝试在XML中使用它
android:indeterminateDrawable="@drawable/yourxmlfile"
style="@android:style/Widget.ProgressBar.Small"