2012-10-24 28 views
7

मैं किसी एक्शनबार मेनू के लिए आइकन को गतिशील रूप से अपडेट कैसे कर सकता हूं ताकि एक नंबर के साथ 'लाल बैज' दिखाया जा सके? (अवधारणात्मक रूप से "अपठित संदेश गिनती" के समान)एक्शनबार मेनू आइटम के लिए गतिशील ड्राइटेबल आइकन? (एंड्रॉइड, एक्शनबैरशेलॉक)

मैं एपीआई स्तर 10+ को लक्षित करने, अपने एंड्रॉइड एप्लिकेशन में एक्शनबैरशेलॉक का उपयोग कर रहा हूं। मेरा एप्लिकेशन मोबाइल डेटा कैप्चरिंग के लिए है और कभी-कभी, उपयोगकर्ता तुरंत नया डेटा सबमिट नहीं कर सकता है लेकिन उसे अवश्य ही इसे स्थानीय रूप से फोन पर सहेजें (उदाहरण के लिए जब कनेक्टिविटी खराब होती है)

जब भी फोन पर स्थानीय रूप से संग्रहीत 'अनुपयुक्त' आइटम होते हैं, तो मैं उपयोगकर्ता को मेनू आइटम (एक्शन बार में) दिखाना चाहता हूं ताकि वह वे UnsubmittedItems गतिविधि पर क्लिक कर सकते हैं और मैन्युअल रूप से अपलोड को ट्रिगर कर सकते हैं।

आदर्श रूप से, इस मेनू आइटम में कुछ ग्राफिकल पुनः होगा असंबद्ध वस्तुओं की संख्या की प्रस्तुति (एक ईमेल या एसएमएस ऐप बैज के रूप में अपठित संदेशों की संख्या को दिखाता है)। वर्तमान में, मैं तो बस कर रहा हूँ:

unsubmittedMenuItem.setTitle(Integer.toString(numUnsubmitted)); 

और यह काम करता है, लेकिन दो मुद्दों: मैं आइकन का उपयोग और भी, मैं था कुछ सुगम ("सबमिट करना रद्द किया") के रूप में शीर्षक रखने के लिए और, करना पसंद करते हैं यहां कुछ कस्टम लेआउट या डिज़ाइन होना पसंद है, जैसे संख्या के पीछे एक लाल सर्कल पृष्ठभूमि।

इस पर विचार करने के विचार क्या हैं? एक स्तर सूची drawable कि संख्याओं के कुछ श्रृंखला के लिए precreated है (उदाहरण के लिए 1, 2, 3 ... 10+)

  1. उपयोग और उसके बाद unsubmittedMenuItem.getIcon() setLevel (:। अब तक अपना शोध दो संभावनाएं का सुझाव numUnsubmitted)
  2. पूरे बिटमैप बिल्ड पूरी तरह से गतिशील, बिटमैप और कैनवास API का उपयोग करके

ये अर्थ है कि मैं (एक बिटमैप में पाठ प्रतिपादन कर रहा हूँ या तो # 1 की तरह या मक्खी पर ऑफ़लाइन में समान हैं # 2 की तरह) लेकिन यदि संभव हो तो एक्शनबार के 'मूल' पाठ प्रतिपादन का लाभ उठाना बहुत अच्छा होगा और टेक्स्टव्यू में इसके पीछे एक लाल वृत्त डालें।

क्या आइकन आकर्षित करने के लिए कस्टम लेआउट सेट करने का कोई तरीका है? (नहीं एक पूर्ण actionLayout, बस आइकन के लिए?)

उत्तर

6

तरीके यह करने के लिए की एक बहुत कुछ कर रहे हैं: अपने आइकन छवि के शीर्ष पर

  1. उपयोग LayerDrawable और ढेर बिल्ला छवियों।
  2. Drawable से एक कस्टम क्लास लिखें जो मैन्युअल रूप से आइकन और बैज खींचती है।
  3. बैज के लिए TextView ओवरले के साथ ImageView में अपने आइकन के साथ एक कस्टम एक्शन आइटम दृश्य का उपयोग करें।
+0

धन्यवाद जेक (मैं आपके काम का एक बड़ा प्रशंसक हूं)। मुझे # 3 से निपटने का प्रयास करने में कुछ समय व्यतीत करने दें - साहित्य एक अलग मेनू आइटम बनाम पूरे एक्शन बार के लिए एक कस्टम लेआउट क्या है, लेकिन मैं गहराई से खोदने के लिए भ्रमित कर रहा हूं। –

+1

विकल्प # 3 निश्चित रूप से जाने का तरीका है और वास्तव में काफी आसान है, एक बार जब आप सफलतापूर्वक सभी एंड्रॉइड अवधारणाओं/अवशेषों से गुजरते हैं। मैंने गलती से सोचा कि एक 'कस्टम एक्शन व्यू' ने पूरे एक्शन बार पर ले लिया है (जैसे विस्तारित खोज बॉक्स उदाहरण में अक्सर उद्धृत किया गया है), लेकिन यदि आप केवल wrap_content करते हैं तो आप आसानी से एक कस्टम 'आइकन' लिख सकते हैं। धन्यवाद! –

+0

@ माइकरपैस मुझे इसी तरह के मुद्दे का सामना करना पड़ रहा है, क्या आप हमारे साथ अपना अनुभव साझा कर सकते हैं? – NullPointer

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