2012-01-26 14 views
16

में करें, मैं NinePatchDrawable का एक कम जटिल संस्करण बनाने में व्यस्त हूं जो उन्हें खींचने के बजाय आंतरिक पैनलों को टाइल करता है।कस्टम ड्रायरेबल बनाएं और इसका उपयोग XML

मैं प्रतिपादन करने के लिए वास्तविक तर्क लागू कर सकता हूं।

हालांकि, मुझे XML फ़ाइलों में इस Drawable का उपयोग करने के तरीके के बारे में दस्तावेज़ नहीं मिल रहा है। क्या यह संभव है? यही है, क्या मेरे पास <tileable-nine-patch> हो सकता है, या ऐसे कुछ टैग, जिन्हें मैं संसाधनों को परिभाषित करने के लिए उपयोग कर सकता हूं?

उत्तर

25

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

हालांकि आप अभी भी अपने जावा कोड में उनका उपयोग कर सकते हैं।

अद्यतन:

LeoFarage टिप्पणी में बताते हैं के रूप में, एपीआई 24 में शुरू होने वाले अब आप कस्टम ड्रॉएबल एक्सएमएल फाइल में उपयोग कर सकते हैं, लेकिन केवल अपने आवेदन पैकेज के भीतर।

+1

[ड्रायबल] (https://developer.android.com/reference/android/graphics/drawable/Drawable.html) दस्तावेज़ों के अनुसार: "_ एपीआई 24 में स्टार्टिंग, कस्टम ड्रॉबल्स क्लासेस का भी XML._ में उपयोग किया जा सकता है "। मुझे उम्मीद है कि यह सुविधा कंपैट लाइब्रेरी में जोड़ने के लिए सिर्फ समय की बात है। – LeoFarage

+0

मैं एपीआई 9 के बाद से आईडीई में कम से कम पूर्वावलोकन मोड में यह सुविधा चाहता था। मैं सभी स्टाइल के लिए कोड का उपयोग करने में सहज हूं, लेकिन पूर्वावलोकन ओह बहुत अच्छा होगा। जानकारी के लिए धन्यवाद! – nekavally

0

एंड्रॉइड एपीआई 24 शुरू करना, कस्टम ड्रायबल्स कक्षाएं केवल आपके पैकेज में एक्सएमएल में उपयोग की जा सकती हैं।

कस्टम ड्रॉएबल कक्षाएं कई मायनों में एक्सएमएल में इस्तेमाल किया जा सकता है:

XML तत्व नाम के रूप में पूरी तरह से योग्य वर्ग के नाम का उपयोग करना। इस विधि के लिए, कस्टम ड्रायबल क्लास एक सार्वजनिक शीर्ष-स्तरीय कक्षा होना चाहिए।

<com.yourapp.MyCustomDrawable 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:color="#ffff0000"/> 

XML तत्व नाम के रूप में drawable का उपयोग करना और वर्ग विशेषता से पूरी तरह से योग्य वर्ग नाम निर्दिष्ट। इस विधि का उपयोग सार्वजनिक शीर्ष-स्तरीय कक्षाओं और सार्वजनिक स्थिर आंतरिक कक्षाओं दोनों के लिए किया जा सकता है।

<drawable xmlns:android="http://schemas.android.com/apk/res/android" 
class="com.myapp.MyTopLevelClass$InnerCustomDrawable" 
android:color="#ffff0000" /> 

नोट: कि समर्थन पुस्तकालय द्वारा समर्थित नहीं है।

+1

तीन प्रश्न: 1) कौन सी एक्सएमएल फाइलें इन घोषणाओं को रखने की आवश्यकता हो सकती हैं? मेरा मतलब लेआउट, ड्रॉबल्स इत्यादि में है 2) क्या होता है जब एपीआई <24 पर चलता है? 3) आपके उदाहरणों में 'android: color' का उपयोग करने का उद्देश्य क्या है? –

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