2010-04-28 15 views
21

मेरे पास निम्न शैली के साथ एक प्रोग्रेसबार है: style="?android:attr/android:progressBarStyleSmall"अनिश्चित अनंत प्रगति के रंग को कैसे बदलें?

दुख की बात है कि बार लगभग सफेद है और मेरे मामले में एक सफेद पृष्ठभूमि पर प्रदर्शित होता है। इसके कारण प्रगति पट्टी लगभग अदृश्य है।

मैं प्रोग्रेसबार का रंग कैसे बदल सकता हूं? एक गहरा भूरा बहुत अच्छा होगा।

उत्तर

10

उस रंग का बार आपके द्वारा चुनी गई शैली के कारण है। यह एक निश्चित शैली है और यूआई तत्वों की पीढ़ी के लिए सिस्टम विषयों का उपयोग करती है।

here से स्रोत कोड देखें। यह प्रगतिबार्स्टाइलसमल विशेषता here परिभाषित शैलियों का उपयोग करती है।

<style name="Widget.ProgressBar.Small"> 
    <item name="android:indeterminateDrawable">@android:drawable/progress_small_white</item> 
    <item name="android:minWidth">16dip</item> 
    <item name="android:maxWidth">16dip</item> 
    <item name="android:minHeight">16dip</item> 
    <item name="android:maxHeight">16dip</item> 
</style> 

एंड्रॉइड स्रोत कोड से उदाहरण के बाद बस एक कस्टम शैली बनाएं। आपको एंड्रॉइड को प्रतिस्थापित करने की आवश्यकता होगी: अनिश्चितता जो आप चाहते हैं उसे ले जाएं।

+8

त्रुटियों के साथ लिंक – Marabita

2

मुझे इसका रंग बदलने की कोशिश करने में बहुत कठिन समय था। इसे हल करने के लिए, मुझे एंड्रॉइड का src कोड मिला और मैंने अपनी प्रगतिबार कक्षा भी की।

सबसे अच्छा जवाब नहीं है, लेकिन यह मेरे लिए काम करता है।

+5

क्या आप कक्षा साझा कर सकते हैं? – Arslan

25

एक काले रंग की ProgressBar पाने के लिए, उलटा शैलियों में से एक का उपयोग करें:

<ProgressBar style="@android:style/Widget.ProgressBar.Inverse"/> 

या उलटा प्रगति सलाखों के किसी भी उपयोग करने के लिए, आप है स्थापित करने के लिए

<ProgressBar style="@android:style/Widget.ProgressBar.Inverse"/> 
<ProgressBar style="@android:style/Widget.ProgressBar.Large.Inverse"/> 
<ProgressBar style="@android:style/Widget.ProgressBar.Small.Inverse"/> 
+0

यह मेरे लिए पूरी तरह से काम किया - धन्यवाद! – greg7gkb

+0

यह साइनोजेन के साथ हमारे जिंजरब्रेड मॉडल में से एक पर काम नहीं करता है। बहुत बुरा :( –

1

बस एक ध्यान दें, अपने स्तर 4 (एंड्रॉइड 1.6) के लिए न्यूनतम एंड्रॉइड एसडीके आवश्यकता।

3
public static void setColorOfProgressBar(ProgressBar mProgressBar, int mColor){ 
    mProgressBar.getIndeterminateDrawable().setColorFilter(mColor, android.graphics.PorterDuff.Mode.MULTIPLY); 
} 
39
progressBar.getIndeterminateDrawable().setColorFilter(
      getResources().getColor(R.color.light_light_purple), 
      android.graphics.PorterDuff.Mode.SRC_IN); 

इस कोड में परिवर्तन डिफ़ॉल्ट होलो अपना खुद का रंग करने के लिए drawable रंग inderminate। अपना रंग कोड परिभाषित करें और R.color.light_light_purple से R.color.your_color_code पर प्रतिस्थापित करें।

+1

यह वास्तव में स्वीकार्य उत्तर होना चाहिए। मैंने हाल ही में जो भी रंग आप चाहते हैं उसे मूल रूप से बदलने के रंग फ़िल्टर विधि की खोज की है, और यह बहुत बढ़िया है। – LukeWaggoner

+0

बहुत बहुत धन्यवाद ..! Plzz अधिक लाभ के लिए मेरा जवाब स्वीकार करें दूसरों के लिए :) –

+0

मुझे लॉलीपॉप से ​​पहले एसडीके संस्करणों के लिए केवल इस स्निपेट का उपयोग करने की आवश्यकता है, इसलिए, मैंने इस स्निपेट को एक स्थिर विधि में लपेट लिया: 'लीगेसी स्टाइल यूटिल # एडजस्ट लेगेसी स्टाइल (संदर्भ, प्रोग्रेसबार) '। फिर, मैं इस विधि को अपनी गतिविधियों/टुकड़ों से आह्वान करता हूं। 'public static void adjustLegacyStyle (संदर्भ संदर्भ, ProgressBar Progressbar) { अगर (BuildConfigUtil.isLegacySDK() && Progressbar! = नल) { progressBar.getIndeterminateDrawable()। SetColorFilter ( context.getResources()। GetColor (नि। color.green_progress), पोर्टरडफ.मोड.आरसीसीईसी); } } ' –

संबंधित मुद्दे