我想動態更新ProgressBar Color,以便與實時更改的應用程序的佈局相匹配。 這個想法是根據設定的值改變顏色。 我發現了一些解決方案,但看起來很重要,運行動畫更新每秒多次。如何輕鬆更改Android中progressBar的顏色?
2
A
回答
4
使用進度的方法:
public void setProgressDrawable (Drawable d)
,並以不同的顏色通過繪製對象,恩。其中有setColor(int color)方法的ColorDrawable。
要改變的飛行嘗試PNG繪製顏色:How to change colors of a Drawable in Android?
編輯:
進度繪製的是LayerDrawable,看起來像:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:drawable/screen_progress_frame" />
<item>
<scale scaleWidth="100%" scaleGravity="0x3" drawable="@android:drawable/screen_progress_inner" />
</item>
</layer-list>
它ScaleDrawable要上色。
創建類似於上面的自己的LayerDrawable,並提取欄可繪製並更改它的顏色。
0
這是您可以在代碼中使用的解決方案(基於pawelzieba的解決方案)。
ProgressBar progressBar = new ProgressBar(context, null, android.R.attr.progressBarStyleHorizontal);
progressBar.setProgressDrawable(new LayerDrawable(
new Drawable[] {
new ColorDrawable(Color.RED),
new ScaleDrawable(new ColorDrawable(Color.GREEN), Gravity.LEFT, 1, -1),
}));
...
progressBar.setProgress(20);
0
那麼,對於任何想要以編程方式尋找的人:不要忘記爲您的Drawable設置ID!
Drawable bckgrndDr = new ColorDrawable(Color.RED);
Drawable secProgressDr = new ColorDrawable(Color.GRAY);
Drawable progressDr = new ScaleDrawable(new ColorDrawable(Color.BLUE), Gravity.LEFT, 1, -1);
LayerDrawable resultDr = new LayerDrawable(new Drawable[] { bckgrndDr, secProgressDr, progressDr });
//setting ids is important
resultDr.setId(0, android.R.id.background);
resultDr.setId(1, android.R.id.secondaryProgress);
resultDr.setId(2, android.R.id.progress);
設置可繪製的id是至關重要的,並且負責保存進度條的邊界和實際狀態。
(它seeems由vmayatskii樣的作品提出瞭解決方案 - 但只有當你調用setProgress(值)aftrawards,該值必須是從目前的進度值不同)
相關問題
- 1. 如何輕鬆更改PNG圖像的顏色?
- 2. 如何輕鬆更改ListView的默認顏色
- 3. JavaFX ProgressBar:如何更改欄的顏色?
- 4. 您可以輕鬆更改Materialise中的芯片顏色嗎?
- 5. 顏色動畫輕鬆
- 6. 更改wp8中progressbar的背景顏色
- 7. 如何更改android不確定的ProgressBar顏色?
- 8. SWT如何更改Windows中的ProgressBar顏色?
- 9. 如何更改Android中tabStrip的顏色?
- 10. 如何更改Android中的seekbar顏色?
- 11. 如何更改水平ProgressBar的開始顏色和結束顏色的梯度
- 12. 鉻ProgressBar不改變顏色
- 13. 我想輕鬆改變Eclipse的文本編輯器的顏色!
- 14. Android顏色ProgressBar通過textview
- 15. 如何更改無限制ProgressBar的顏色?
- 16. 如何更改jQueryUI Progressbar的背景顏色?
- 17. 如何輕鬆測試android
- 18. 如何輕鬆提取圖像顏色的百分比?
- 19. Android棒棒糖,如何更改不同UI元素的顏色(ProgressBar,Switch,TextInput)
- 20. 如何更改fab:tit_title顏色的FloatingActionButton android
- 21. 我該如何輕鬆改變我的應用標題文字顏色?
- 22. Android TV,如何更改headeritem的標題和顏色的顏色?
- 23. Android輕鬆切換應用顏色方案
- 24. 更改EditText的顏色android
- 25. 更改android的顏色:activatedBackgroundIndicator
- 26. 如何更改Android MaterialCalendarView月份顏色?
- 27. 如何更改Android按鈕顏色onClick?
- 28. android:如何更改ListPreference標題顏色?
- 29. Android:如何更改ProgressBar的高度?
- 30. 如何輕鬆打印貼紙(彩色)
嗨,感謝您的回答,雖然這實際上改變了整個進度條的顏色和背景,而不僅僅是它的進度部分。有關如何更改進度條的任何線索? – barata7 2011-03-15 15:44:48
我編輯了答案,是否有幫助? – pawelzieba 2011-03-16 11:05:17