2011-10-15 11 views
10

मेरे पास समान अनुप्रयोगों का एक सेट है। मैंने लाइब्रेरी प्रोजेक्ट और एप्लिकेशन में सामान्य संसाधनों और कोड निकाले हैं जो उन्हें आवश्यकतानुसार ओवरराइड करते हैं।Android लाइब्रेरी प्रोजेक्ट में परिभाषित शैली विशेषताओं को ओवरराइड (या छुपाएं) कैसे करें?

<style name="ListItemText"> 
    <item name="android:layout_toRightOf">@id/preview_image</item> 
    <item name="android:textStyle">bold</item> 
    <item name="android:textSize">@dimen/previewTextSize</item> 
</style> 

आप देख सकते हैं इसमें android:layout_toRightOf इस शैली के रूप में विशेषता ListView पंक्ति में पाठ जो कि में छवि के दाईं ओर प्रदर्शित किया जाना चाहिए करने के लिए आवंटित किया जाएगा: मेरी लाइब्रेरी में निम्नलिखित शैली में परिभाषित किया गया है पंक्ति।
हालांकि मेरे अनुप्रयोगों में से एक में मैं छवि के नीचे पाठ प्रदर्शित करना चाहता हूं। उस एप्लिकेशन में ListItemText शैली को android:layout_toRightOf विशेषता मान ओवरराइड करने के लिए परिभाषित किया जाना चाहिए और इसे android:layout_below से प्रतिस्थापित करें?

अगर मैं के रूप में यह निर्धारित करें:

<style name="ListItemText"> 
    <item name="android:layout_below">@id/preview_image</item> 
</style> 

यह सही करने के लिए और चित्र के नीचे टेक्स्ट प्रदर्शित करता है, प्रभावी रूप से दोनों पुस्तकालय और आवेदन शैलियों XMLs से गुण संक्षेप।

पीएस .: शैलियों में android:layout_toRightOf से छुटकारा पाने के लिए और इसे लेआउट xml पर ले जाने के लिए मेरे मुद्दे का एक संभावित समाधान होगा। फिर लक्ष्य आवेदन में इस लेआउट को फिर से परिभाषित/ओवरराइड किया जा सकता है। लेकिन मैं स्टाइल-आधारित समाधान की तलाश में हूं, क्योंकि यह ओवरराइडिंग के अधिक सरल और सीधा तरीके प्रदान कर सकता है।
(मैं parent विशेषता के साथ विरासत शैली का भी उपयोग कर सकता हूं, लेकिन फिर इसे एप्लिकेशन में लेआउट ओवरराइडिंग की आवश्यकता होगी, जिसे मैं टालने का प्रयास करता हूं)।

+0

मैं इसी तरह यहाँ कुछ कर रहा हूँ !!! http://stackoverflow.com/questions/17103894/overriding- संदर्भित- स्टाइल- सामग्री – toobsco42

उत्तर

6

android:layout_toRightOf अक्षम करने के लिए, आप इसे @null पर सेट कर सकते हैं। इस प्रकार अपने अनुप्रयोग ListItemText शैली को परिभाषित करता है, तो यह आप चाहते हैं के रूप में काम करना चाहिए:

<style name="ListItemText"> 
    <item name="android:layout_toRightOf">@null</item> 
    <item name="android:layout_below">@id/preview_image</item> 
</style> 
+0

इरादे के रूप में काम करता है, धन्यवाद। क्या यह '@ null' संदर्भ दस्तावेज़ में कहीं निर्दिष्ट है? – Idolon

+1

जहां तक ​​मुझे पता है, किसी भी स्पष्ट स्थान पर नहीं, लेकिन इसका उल्लेख किया गया है, उदाहरण के लिए यहां: http://developer.android.com/resources/articles/window-bg-speed.html –

0

आप एक विशेष शैली प्राप्त करने के लिए "पैरेंट" का उपयोग कर सकते हैं (http://developer.android.com/guide/topics/ui/themes.html देखें) लेकिन शैलियों के साथ इस तरह के लेआउट को परिभाषित करने से मुझे इस समस्या को हल करने के तरीके के रूप में नहीं मारा जाता है। लेआउट फ़ाइलों में कुछ लेआउट जानकारी छोड़ना ठीक है।

+0

हां, मुझे "पैरेंट" के बारे में पता है। लेकिन लाइब्रेरी के अंदर लेआउट परिभाषित होने के बाद से यह मेरे मामले में मदद नहीं करेगा और यह 'ListItemText' शैली का संदर्भ देता है। मैं पाठ्यक्रम के आवेदन में शैली को फिर से परिभाषित कर सकता हूं (मेरी पी.एस. देखें), लेकिन यह जानना चाहेंगे कि स्टाइल-आधारित समाधान संभव है या नहीं। – Idolon

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

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