2010-08-21 16 views
7

मैं सोच रहा था कि मेरे खुद के ड्रॉइंग के साथ कस्टम शीर्षक दिखाने का कोई तरीका था या फिर बाद में शीर्षक लेआउट में प्रगति पट्टी डालें ताकि यह एंड्रॉइड प्रगति में निर्मित हो बार।एंड्रॉइड में प्रगति के साथ कस्टम टाइटल बार

मेरे कोड में - मैं setProgressBarIndeterminateVisibility(true) पर कॉल करने में सक्षम होना चाहता हूं और यह मेरे कस्टम टाइटल बार में प्रगति पट्टी प्रदर्शित कर सकता है।

क्या यह संभव है?

मैंने अपना एप्लिकेशन थीम सेट अप किया है ताकि यह कस्टम शीर्षक का उपयोग कर सके - लेकिन मुझे नहीं लगता कि उस लेआउट में प्रगति पट्टी को कैसे या कहां रखा जाए।

अग्रिम धन्यवाद।

संपादित करें: के रूप में शीर्षक पृष्ठभूमि शैली के साथ

<style parent="android:Theme.Light.NoTitleBar" name="BaseTheme"> 
    <item name="android:windowBackground">@drawable/splash_bg</item> 
    <item name="android:windowTitleStyle">@style/TitleBackground</item> 
</style> 

: अभी मुझे लगता है कि इस तरह दिखता है मेरे अपने विषय का उपयोग

<style name="TitleBackground" parent="android:WindowTitleBackground"> 
    <item name="android:background">@drawable/title_bar</item> 
</style> 

हर किसी को एक बेहतर विचार देने के लिए - की तरह कुछ इस। alt text

+0

यदि आप किसी अन्य से यह कॉल, होगा आप के लिए है कि काम की जगह ले सकता है? क्योंकि आपके पास कभी भी किसी अन्य शीर्षक सुविधा के साथ CUSTOM_TITLE नहीं हो सकता है। – MahdeTo

+0

मेरा मतलब है कि मैं बस अपना खुद का लेआउट बना सकता हूं और प्रत्येक स्क्रीन पर अपना शीर्षक शामिल करने के लिए '' का उपयोग कर सकता हूं - लेकिन चूंकि मैं इस विधि को ओवरराइड नहीं कर सकता, इसलिए मुझे अपना शो दिखाने और छिपाने के लिए एक अलग विधि बनाना होगा अपनी प्रगति पट्टी - और फिर प्रत्येक गतिविधि में डाल दिया। ठीक है - अब जब मैं इसके बारे में सोचता हूं तो मैं इसे एक कक्षा में डाल सकता हूं और बस उस वर्ग को कॉल कर सकता हूं लेकिन यह अभी भी अधिक काम करता है जो मैं करना चाहता हूं :)। – hwrdprkns

उत्तर

3

मुझे विश्वास है कि ऐसा करने का एकमात्र तरीका अपने स्वयं के कस्टम टाइटल बार का उपयोग करना है। आप अपने ओपन सोर्स के बाद एंड्रॉइड कोड को ओवरराइड कर सकते हैं - लेकिन यह एक बुरा विचार हो सकता है। सबसे अच्छी बात यह है कि टाइटल बार लेआउट बनाना और <include /> इसे अन्य सभी लेआउट में बनाना है और हो सकता है कि प्रगति पट्टी को दिखाने और छिपाने के लिए एक सहायक वर्ग हो।

4

यहाँ कैसे एक प्रगति संकेतक के साथ एक कस्टम शीर्षक पट्टी को लागू करने के लिए एक महान उदाहरण है:

http://downloadandroid.info/2010/08/creating-a-custom-titlebar/

मेरे समाधान एक ActivityHelper वर्ग जो गतिविधि एक प्रदान करता है और इस विधि में शामिल हैं और साथ ही है प्रगति पट्टी को चालू या बंद करने के लिए, फिर मेरी प्रत्येक क्रियाकलाप से उस वर्ग का विस्तार करें।

12

किसी अन्य कोड से पहले onCreate में यह कोड जोड़ें:

requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); 
requestWindowFeature(Window.FEATURE_PROGRESS); 

setProgress(xx); // Then use this to update the progress to xx amount 

/बंद उपयोग

setProgressBarIndeterminateVisibility(false); //true to turn on. 

मैं एक लॉगिन गतिविधि में इस का इस्तेमाल किया है चालू करने के लिए, मेरी समस्या यह है कि मैं सबसे चलाया जाता है लॉगिन async का इसलिए मुझे UI को अपडेट करने में समस्याएं आ रही हैं। लेकिन मुझे प्रदर्शित करने के लिए परिपत्र प्रगति एनीमेशन मिलता है।

मेरे पास टैबएक्टिविटी द्वारा शुरू किए गए गतिविधि उद्देश्यों के भीतर एक एसिंक कॉल से अपडेट की जा रही टैबएक्टिविटी पर काम कर रहा है। मुझे TabActivity और कॉल गतिविधि दोनों में "requestWind ...." लाइनें डालनी पड़ीं। इसके अलावा मैंने पाया है कि सेट प्रोग्रेस का उपयोग बहुत कुछ नहीं कर रहा था, लेकिन स्पिनर एनीमेशन पूरे समय "कताई" था इसलिए मैं खुश हूं।

+0

एचटीसी इच्छा और एचटीसी wilrfire 2.2.2 पर काम नहीं करता है – ozmank

0

नए संस्करणों में अनुरोध की तकनीकविंडोफेचर काम नहीं करेगा। Google द्वारा प्रदत्त v7.widget.toolbar का उपयोग करने का एक बेहतर विकल्प होगा। निम्न लिंक इसका उपयोग करने के तरीके पर उचित विवरण देता है।

Setting up the Actionbar

http://developer.android.com/training/appbar/setting-up.html

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