2010-04-30 15 views
13

में एक ड्रायबल क्लास का संदर्भ कैसे दे सकता हूं मैंने एक कक्षा बनाई है जो आकर्षित करने योग्य है जिसे मैं संसाधन xml के अंदर संदर्भित करना चाहता हूं। मैं एक चयनकर्ता में इसकी आवश्यकता इसलिए की तरह होती हैं:मैं एंड्रॉइड एक्सएमएल

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_window_focused="false" android:state_pressed="false" 
android:drawable="com.sample.android.contacts.TopBarCollapsed" 
/> 
<item android:state_window_focused="true" android:state_pressed="true" android:drawable="@drawable/top_switcher_collapsed_selected" /> 
<item android:state_focused="true" android:drawable="@drawable/top_switcher_collapsed_focused" /> 

com.sample.android.contacts.TopBarCollapsed वर्ग कि drawable फैली हुई है।

+2

अभी भी इस पर खोज - इस नोट को http://groups.google.com/group/android-developers/browse_thread/thread/140ea9d8992434d7/28d94f078f15a6b4?lnk=gst&q=drawable#28d94f078f15a6b4 जो मैंने पढ़ा है कि यह संभव नहीं है । –

+0

मुझे एक और चर्चा धागा मिला (यूआरएल खो गया) जहां यह कहा गया था कि सुरक्षा विचारों के कारण एक्सएमएल मार्कअप में मनमाने ढंग से खींचने योग्य वर्गों को अनुमति नहीं दी गई थी। जो समझ में आता है: हानिरहित एप्लिकेशन के लिए "दुर्भावनापूर्ण ड्रायबल" की आपूर्ति करना अपेक्षाकृत आसान होगा, और निष्पक्ष ऐप के संदर्भ में ड्रायबल कोड को निष्पादित किया जाएगा। –

उत्तर

-4

इस उदाहरण एक संसाधन एक्सएमएल चेकआउट में कस्टम दृश्य कक्षाओं के लिए:

http://developer.android.com/guide/topics/ui/custom-components.html#modifying

सुनिश्चित नहीं हैं कि कक्षाओं कि Drawable विस्तार करने के लिए लागू होता है, लेकिन एक कोशिश अपने लायक ... एक दूसरी बात, मैं रखा इस नोट को अपनी कक्षा फ़ाइल में परिभाषित कक्षाओं के लिए नीचे की ओर लापता है:

यदि आपका कस्टम व्यू घटक आंतरिक कक्षा के रूप में परिभाषित नहीं किया गया है, तो आप वैकल्पिक रूप से एक्सएमएल तत्व नाम के साथ व्यू घटक घोषित कर सकते हैं, और बहिष्कृत कर सकते हैं कक्षा विशेषता। उदाहरण के लिए:

<com.android.notepad.MyEditText 
id="@+id/note" 
... /> 
3

मेरा मानना ​​है कि यह अच्छी तरह से यहां उत्तर था: https://stackoverflow.com/a/11024035/2662474

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

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

कस्टम ड्रॉएबल एक्सएमएल से की अनुमति नहीं है, ज्यादातर सुरक्षा कारणों के लिए:

कि लिंक रोमन लिखते में

। एक्सएमएल ड्रॉबल्स को अन्य प्रक्रियाओं (लॉन्चर या सिस्टम प्रोसेस सहित) द्वारा संसाधनों के रूप में लोड किया जा सकता है और इन प्रक्रियाओं में यादृच्छिक तृतीय पक्ष कोड चलाने के लिए यह एक भयानक विचार होगा।

सुरक्षा आवश्यक है, लेकिन निश्चित रूप से यह अच्छा होगा अगर डेवलपर के रूप में अधिक स्थिरता और नियंत्रण रखने का एक साफ तरीका था।

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