如何更改android不确定的ProgressBar颜色?
我正在寻找一个非常明显的东西(用其他语言!!),这让我疯狂!
我想知道如何将不确定的ProgressBar颜色从基础白/灰色更改为黑色? 当我改变indeterminateDrawable,我得到一个静态图像,而不是一个移动的animationprogressBar。 有什么办法可以简单地在XML中做到这一点?
谢谢 !
要在白色/浅色背景上使用的默认主题中获取ProgressBar,请使用以下其中一种逆向样式:
<ProgressBar style="@android:style/Widget.ProgressBar.Inverse"/> <ProgressBar style="@android:style/Widget.ProgressBar.Large.Inverse"/> <ProgressBar style="@android:style/Widget.ProgressBar.Small.Inverse"/>
这通常会在透明ProgressBar上给你一个黑色,但是一些操作系统安装使用自定义资源。 如果你正在寻找一个特定的颜色,你将不得不按照CommonsWare提供的说明推出你自己的drawable。
progressBar.getIndeterminateDrawable().setColorFilter( getResources().getColor(Your_Color), android.graphics.PorterDuff.Mode.SRC_IN);
并用所需的颜色replaceYour_Color,如:R.color.your_color_code
我制作示例项目并在我的博客中发布。 请看, http://www.hrupin.com/2011/09/21/how-to-make-custom-indeterminate-progressbar-in-android-or-how-to-change-progressbar-style-or-color
希望,它可以帮助你
我看到其他答案是相当古老的,为了改变不确定的ProgressBar颜色,你只需要在你的ProgressBar
项目中直接在XML中设置android:indeterminateTint
和android:indeterminateTintMode
属性:
<ProgressBar android:layout_width="wrap_content" android:layout_height="wrap_content" android:indeterminateTint="@color/colorPrimary" android:indeterminateTintMode="src_in" android:indeterminate="true" />
android:indeterminateTint
– 应用于不确定进度指示器的色调。
必须是
"#rgb"
,"#argb"
"#rgb"
,"#argb"
"#rrggbb"
,"#aarrggbb"
或对资源@color/colorPrimary
的引用的@color/colorPrimary
。
android:indeterminateTintMode
– 用于应用进度指示符tint的混合模式。
必须是以下常数值之一:
add
,multiply
,screen
,src_atop
,src_in
或src_over
这些属性的Getter和Setter方法是:
-
getIndeterminateTintList()
-
getIndeterminateTintMode()
-
setIndeterminateTintList(ColorStateList tint)
-
setIndeterminateTintMode(PorterDuff.Mode tintMode)
所有这些都是在API级别21中添加的
<?xml version="1.0" encoding="UTF-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@android:id/background" android:drawable="@drawable/bg" /> <item android:id="@android:id/secondaryProgress" android:drawable="@drawable/secondary" /> <item android:id="@android:id/progress" android:drawable="@drawable/progress" /> </layer-list>
实际上所有你需要做的(对于cirle和酒吧)是创build一个xml文件绘制如下所示…… progress_spinner_001指向任何图像你想animation和持续时间…你想多久显示每个框架…….和设置你的android:indeterminateDrawable = filename_in_drawable ….
<?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false"> <item android:drawable="@drawable/progress_spinner_001" android:duration="300" /> <item android:drawable="@drawable/progress_spinner_002" android:duration="300" /> <item android:drawable="@drawable/progress_spinner_003" android:duration="300" /> <item android:drawable="@drawable/progress_spinner_004" android:duration="300" /> <item android:drawable="@drawable/progress_spinner_005" android:duration="300" /> <item android:drawable="@drawable/progress_spinner_006" android:duration="300" /> <item android:drawable="@drawable/progress_spinner_007" android:duration="300" /> <item android:drawable="@drawable/progress_spinner_008" android:duration="300" /> </animation-list>
您可能需要调整进度条以根据需要显示
- AndroidRuntime错误:包裹:无法编组值
- Android Studio安装后无法启动
- 无法parsing:com.google.firebase:firebase-core:9.0.0
- 在Android 4上使用Android Studio的NoClassDefFoundError
- 如何在不下载Android Studio的情况下下载Android SDK?
- 无法在android中调用String.isEmpty()
- APP_PLATFORM,android:minSdkVersion和android:targetSdkVersion之间有什么关系?
- Android Studio多Windows一个项目
- 如何在Android Studio中使用ADB查看SQLite数据库