2011-10-03 14 views
9

मैं एक्सएमएल में आसानी से पुन: प्रयोज्य आधार आकार (या ढाल, या कोनों) को कैसे परिभाषित कर सकता हूं?ग्रेडियेंट/आकार/कॉर्नर के एक्सएमएल अभिभावक शैली को परिभाषित करना

मेरे पास एक दर्जन या तो ड्रॉइंग ग्रेडिएंट हैं जो प्रारंभ और अंत रंगों के अलावा समान होंगे। मैं कहीं और समान सामान को परिभाषित करने की उम्मीद कर रहा था और प्रत्येक अलग ढाल के लिए एक एक्सएमएल फ़ाइल है जो केवल प्रारंभ और अंत रंगों को परिभाषित करता है। क्या यह संभव है?

इस आधार है:

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
     android:shape="rectangle"> 
    <gradient xmlns:android="http://schemas.android.com/apk/res/android" 
     android:type="linear" 
     android:angle="270" 
    android:startColor="#e1ffffff" 
    android:endColor="#e100ff00"> 

    <stroke android:width="1dp" 
      android:color="#ff000000" /> 

    <corners android:radius="4dp" /> 
</gradient> 
</shape> 

तब मैं startColor और endColor अधिलेखित करना चाहते थे (और शायद कोनों भी त्रिज्या या किसी अन्य संपत्ति) प्रत्येक drawable के एक्सएमएल फ़ाइल में।

मैंने माता-पिता और शैलियों दोनों का उपयोग करने की कोशिश की, लेकिन उनमें से कोई भी गुणों का उपयोग नहीं करता है।

<style name="base_gradient"> 
    <item name="android:angle">270</item> 
    <item name="android:type">linear</item> 
    <item name="android:startColor">#e1ffffff</item> 
    <item name="android:endColor">#e100ff00</item> 
</style> 

और फिर drawable दिखेगा: उदाहरण के लिए:

<gradient style="@style/base_gradient" /> 

काम नहीं किया है। मैंने उपरोक्त अपनी एक्सएमएल फ़ाइल में उपरोक्त डालने की कोशिश की और फिर प्रत्येक ड्रायबल के लिए ऐसा किया:

<gradient parent="@drawable/base_gradient" /> 

यह काम नहीं करता था।

क्या ऐसा करने का कोई तरीका है?

उत्तर

7

दुर्भाग्य से मुझे नहीं लगता कि यह संभव है। मैंने एक ही काम करने की कोशिश की और समाधान नहीं मिला।

मैं जो सुझाव दूंगा वह आपके सभी मूल्य संसाधन xml फ़ाइलों में डाल रहा है। मेरे मामले में मैंने अपने आयामों को dimens.xml, & integers.xml और colours.xml में रंग डालने का विकल्प चुना है (हालांकि उन्हें एक फ़ाइल में जोड़ा जा सकता था)

जबकि मैं प्रत्येक के लिए एक आकृति खींचने योग्य फ़ाइल के साथ समाप्त हुआ रंग, कम से कम अगर मैं रंग या पैडिंग आदि को ट्विक करना चाहता हूं तो मुझे केवल colours.xml फ़ाइल integers.xml या dimens.xml फ़ाइल को संपादित करने की आवश्यकता है।

मेरी आकार drawable में से एक तो इस तरह देखा:

<?xml version="1.0" encoding="UTF-8"?> 

<shape 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle" > 

    <corners 
     android:radius = "@dimen/radius_corner" /> 

    <!-- end colour at top, start colour at bottom --> 
    <gradient 
     android:angle="@integer/gradient_angle_default" 
     android:endColor="@color/white" 
     android:startColor="@color/pink_pale"/> 

    <padding 
     android:left = "@dimen/my_padding" 
     android:right = "@dimen/my_padding" 
     android:bottom = "@dimen/my_padding" 
     android:top = "@dimen/my_padding" /> 

</shape> 

संसाधन फ़ाइल लिंक: http://developer.android.com/guide/topics/resources/more-resources.html

आशा इस मदद करता है।

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