2012-03-06 13 views
12

मेरे पास मेरे एंड्रॉइड मेनू के लिए आइकन हैं। एंड्रॉइड 3+ पर मैं एक ब्लैक एक्शनबार का उपयोग कर रहा हूं ताकि आइकन सफेद हों। हालांकि, एंड्रॉइड 2.x पर मेनू मूल रूप से सफेद है जिसका अर्थ है कि आइकन लगभग अदृश्य हैं। मैं विभिन्न संस्करणों के लिए विभिन्न मेनू आइकन का उपयोग कैसे कर सकता हूं? मुझे लगता है कि मैं इसे विभिन्न ड्रॉइंग निर्देशिकाओं जैसे res/drawable-mdpi-v11 का उपयोग करके कर सकता हूं, लेकिन मुझे आश्चर्य है कि अगर कोई और तरीका है तो मुझे अलग-अलग निर्देशिकाओं का समूह बनाने की ज़रूरत नहीं है क्योंकि मैं संस्करण या पिक्सेल जोड़ता हूं घनत्व।विभिन्न एंड्रॉइड एसडीके संस्करणों के साथ विभिन्न आइकन का उपयोग करें

संपादित करें: मैंने एंड्रॉइड 2.x के साथ उपयोग के लिए res/drawable-mdpi और res/drawable-hdpi में अंधेरे संस्करण डाले हैं और मैंने हल्के संस्करणों को res/drawable-mdpi-v11 और res/drawable-hdpi-v11 में रखा है एंड्रॉइड 3.x और उच्चतम के साथ उपयोग के लिए, लेकिन मेरा एंड्रॉइड 2.1 (एसडीके 7) एमुलेटर अभी भी हल्का संस्करण दिखा रहा है।

कोई विचार क्यों?

उत्तर

19

आप Styles and Themes dev मार्गदर्शिका में उल्लिखित प्लेटफॉर्म संस्करण के आधार पर एक थीम का चयन कर सकते हैं। एक res/values-v11/फ़ोल्डर में

<style name="ThemeSelector" parent="android:Theme.Light"> 
    ... 
</style> 

फिर, अपने विषय का चयन करें (शायद Holo, यदि आप डार्क रहे हैं)

<style name="ThemeSelector" parent="android:Theme.Holo"> 
    ... 
</style> 
: इस तरह से अपनी res/values ​​/ styles.xml में एक शैली को परिभाषित करें

फिर उस शैली में आइकन जोड़ें। उदाहरण के लिए, यहाँ HoneycombGallery नमूना अनुप्रयोग से शैलियों.एक्सएमएल फ़ाइल से एक स्निपेट है।

<style name="AppTheme.Dark" parent="@android:style/Theme.Holo"> 
    ... 
    <item name="menuIconCamera">@drawable/ic_menu_camera_holo_dark</item> 
    <item name="menuIconToggle">@drawable/ic_menu_toggle_holo_dark</item> 
    <item name="menuIconShare">@drawable/ic_menu_share_holo_dark</item> 
</style> 

नीचे 3 तत्व ड्रॉइंग निर्देशिकाओं में सभी आइकन हैं। आपको अभी भी प्रति संकल्प-विशिष्ट सेट आइकन के कम से कम एक फ़ोल्डर की आवश्यकता होगी, लेकिन आप उसी फ़ोल्डर में प्रकाश & अंधेरे आइकन जोड़ सकते हैं, लेकिन आपको प्रत्येक प्लेटफ़ॉर्म संस्करण के लिए आइकन के अलग-अलग फ़ोल्डरों की आवश्यकता नहीं होगी। इसके अलावा, आप, मूल्यों/attrs.xml फ़ाइल में संदर्भ के रूप में उन्हें सूचीबद्ध करने इस तरह की आवश्यकता होगी:

<resources> 
    <declare-styleable name="AppTheme"> 
    <attr name="listDragShadowBackground" format="reference" /> 
    <attr name="menuIconCamera" format="reference" /> 
    <attr name="menuIconToggle" format="reference" /> 
    <attr name="menuIconShare" format="reference" /> 
    </declare-styleable> 
</resources> 

इसके बाद से आप का उपयोग कर "अपने लेआउट एक्सएमएल के भीतर उन्हें का उल्लेख करने में सक्षम हो जाएगा? attr/nameOfYourDrawable "dereference, इस तरह:

<item android:id="@+id/menu_camera" 
     android:title="@string/camera" 
     android:icon="?attr/menuIconCamera" 
     android:showAsAction="ifRoom" /> 
6

एंड्रॉयड देव साइट पर मिल गया: http://developer.android.com/guide/practices/ui_guidelines/icon_design_menu.html

चेतावनी: इन संसाधनों मंच संस्करणों के बीच बदल सकते हैं, जब आप इन आइकन एंड्रॉयड प्लेटफॉर्म संसाधन आईडी का उपयोग कर संदर्भित नहीं करना चाहिए (यानी android.R.drawable के नीचे मेनू प्रतीक) । यदि आप किसी भी आइकन या अन्य आंतरिक ड्रॉबल संसाधनों का उपयोग करना चाहते हैं, तो आपको अपने एप्लिकेशन संसाधनों में उन आइकनों या ड्रॉबल्स की स्थानीय प्रतिलिपि संग्रहित करनी चाहिए, फिर स्थानीय एप्लिकेशन को अपने एप्लिकेशन कोड से संदर्भित करना चाहिए। इस तरह, आप अपने आइकनों की उपस्थिति पर नियंत्रण बनाए रख सकते हैं, भले ही सिस्टम की प्रति बदल जाए। ध्यान दें कि नीचे ग्रिड पूरा होने का इरादा नहीं है।

/res/drawable-hdpi (Android 2.2 और नीचे के लिए)

/res/(Android 2.3 और इसके बाद के संस्करण के लिए) drawable-hdpi-वी #

आप भी एक 2.1 पर इस परीक्षण की कोशिश की है + फोन और एक एमुलेटर नहीं? अगर आपके पास फोन नहीं है, तो एक और एवीडी बनाने का प्रयास करें? मुझे डर है कि आपको अलग फ़ोल्डरों की आवश्यकता होगी।

उम्मीद है कि इससे मदद मिलती है।

+0

यह वही था जो मुझे चाहिए था। मैं अपने ऐप में हल्के और काले आइकन सेट के साथ लड़ रहा था। 2 के बाद से।3 और एक सफेद मेनू और 3.0 के उपयोग के तहत मानक विषयों के लिए एक अंधेरे मेनू का उपयोग करें, मैं सिर्फ एक आइकन सेट का उपयोग नहीं कर सका। धन्यवाद! – kenyu73

+1

यह जवाब होना चाहिए। अच्छा काम करता है –

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

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