2010-04-14 38 views
60

我正在尋找一個非常明顯的事情(用其他語言!!),它讓我瘋狂!如何更改android不確定的ProgressBar顏色?

我想知道如何將不確定的ProgressBar顏色從基礎白色/灰色更改爲黑色?當我改變indeterminateDrawable,我得到一個靜態圖像,而不是一個移動的動畫progressBar。有什麼辦法可以簡單地在xml中完成嗎?

謝謝!

回答

-4

實際上所有你需要做的(對於cirle和bar)是創建一個可繪製的xml文件,如下所示...... progress_spinner_001指向任何你想要動畫和持續時間的圖像......多長時間ü要顯示的每個幀爲....... 並設置烏爾機器人: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> 

Ps作爲期望

+4

-1:這個答案說「如下所示」,但它什麼也沒有顯示。我覺得很難理解。 – 2012-02-16 14:53:42

64

U可需要調整進度條顯示要在默認主題中使用白色/淺色背景中的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提供的說明滾動自己的繪圖。

+0

這似乎不是一個設備不可知的解決方案。在我的LG Optimus 2X Speed上,一個不確定的ProgressBar仍然是黑色的,而在使用CyanogenMod 2.3.3的HTC Desire HD時,它始終是紅色的。 – 2011-04-06 15:47:11

+0

@保羅 - 是的,你是對的。許多設備製造商定製主題,並且默認主題可以在Android版本之間改變。我會更正 – Anm 2011-04-20 15:26:10

+0

以上的文字爲我工作。謝謝 – serggl 2016-05-12 11:40:24

7
<?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> 
63
progressBar.getIndeterminateDrawable().setColorFilter(
      getResources().getColor(Your_Color), 
      android.graphics.PorterDuff.Mode.SRC_IN); 

,並與像期望的顏色替換Your_Color:R.color.your_color_code

+0

這應該是可以接受的答案;) – Leo 2015-06-02 01:54:34

+0

這是最快捷最簡單的方法。 – 2015-12-16 14:00:19

+8

可以在xml中定義:'android:indeterminateTint =「@ colors/your_color」''android:indeterminateTintMode =「src_in」' – zhaoyuanjie 2016-01-05 10:45:09

10

我看到其他的答案是很老,爲了改變不確定的ProgressBar顏色,您只需在您的ProgressBar項目中直接以XML格式設置android:indeterminateTintandroid: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""#rrggbb""#aarrggbb"的形式,或者以一個資源@color/colorPrimary的參考。

android:indeterminateTintMode - 用於應用進度指示符色調的混合模式。

必須是以下恆定值之一:
addmultiplyscreensrc_atopsrc_insrc_over

Getter和這些屬性設置器方法是:

他們都在API level 21

+1

工作正常,謝謝 – Duque 2017-01-31 18:26:56

+1

Thankssssssssss :) – Denees 2017-03-01 11:42:18

+0

完美地工作這是一個很好的解決方案,我一直在尋找大約2小時不同的解決方案,非常感謝! – 2017-11-10 14:33:14

0

加入對於API小於23使用

progressBar.getIndeterminateDrawable().setColorFilter(
     getResources().getColor(Your_Color), 
     android.graphics.PorterDuff.Mode.SRC_IN); 

使用別的

progressBar.getIndeterminateDrawable().setColorFilter(
     ContextCompat.getColor(context, Your_Color), 
     android.graphics.PorterDuff.Mode.SRC_IN); 
相關問題