/ / एंड्रॉइड - कस्टम शैलियों को ट्विस्ट करने के लिए विशेषताओं का उपयोग करें - एंड्रॉइड, विशेषताओं, शैलियों, थीम

एंड्रॉइड - कस्टम शैलियों को ट्विक करने के लिए विशेषताओं का उपयोग करें - एंड्रॉइड, विशेषताओं, शैलियों, विषयों

यहाँ "मेरा मुद्दा है। मैंने कस्टम विषयों और शैलियों को परिभाषित किया है, ताकि प्रासंगिक .xml फ़ाइलों में विभिन्न दृश्यों को अनुकूलित किया जा सके। यहां कुछ कोड अर्क दिए गए हैं:

themes.xml:

...
<style name="Legacy" parent="android:Theme.NoTitleBar">
<item name="android:buttonStyle">@style/Legacy.Button</item>
...
</style>

styles.xml:

...
<style name="Legacy.Button" parent="@android:style/Widget.Button">
<item name="android:textColor">#ffffff</item>
<item name="android:background">@drawable/button_selector_blue</item>
<item name="android:textSize">15dp</item>
</style>

चलो कहते हैं कि मैं अपने आवेदन लिगेसी के लिए विषय निर्धारित किया है। यदि मैं किसी लेआउट में एक बटन का उपयोग करता हूं, तो यह मेरे कस्टम डिफ़ॉल्ट पैरामीटर (सफेद पाठ, पृष्ठभूमि @ @ drawable / button_selector_blue, आदि) प्राप्त करेगा।

अब कहते हैं कि मैं उन मापदंडों को पाठ आकार के लिए सहेज कर रखना चाहता हूं: मैं "बड़े पाठ आकार के साथ कुछ बटन रखना पसंद करता हूं, जिसे attrs.xml में एक शीर्षक विशेषता में परिभाषित किया जाएगा:

...
<attr name="titleSize" format="reference|dimension" />

और कौन सा मान मेरे theme.xml फ़ाइल में प्रत्येक विषय के लिए सेट है।

तो मेरे लेआउट में कुछ ऐसा होगा:

<Button
android:id="@+idmyButtonId"
android:drawableRight="@drawable/aDrawable"
android:text="@string/someText"
android:textSize="?titleSize"
android:layout_width="fill_parent" android:layout_height="wrap_content">
</Button>

अपना ऐप लॉन्च करते समय मुझे निम्नलिखित त्रुटि मिलती है: java.lang.UnsupportedOperationException: "t को आयाम में परिवर्तित नहीं किया जा सकता: प्रकार = 0x2

तो ऐसा लगता है कि मैं विशेषताओं का उपयोग करके कस्टम शैलियों को ट्विक नहीं कर सकता - कम से कम इस तरह से नहीं। क्या ऐसा कुछ संभव है ? यदि नहीं, तो आप इस तरह के परिणाम को प्राप्त करने के लिए क्या उपयोग करेंगे?

मैं "उपयोगकर्ता को विभिन्न विषयों के बीच चयन करने की क्षमता प्रदान करना चाहता हूं, इसलिए मैं केवल एक अतिरिक्त बटन को परिभाषित कर सकता हूं। शैली शैली और सीधे अपने लेआउट में उपयोग करें।

आपकी सहायताके लिए धन्यवाद !

उत्तर:

जवाब के लिए 0 № 1

मुझे अंत में यह काम करने के लिए मिला है। मेरे शीर्षक "आकार को attrs.xml में परिभाषित करने के बजाय, मैंने dimens.xml का उपयोग किया। इसलिए अब निम्नलिखित काम करता है:

<Button
android:id="@+idmyButtonId"
android:drawableRight="@drawable/aDrawable"
android:text="@string/someText"
android:textSize="@dimen/titleSize"
android:layout_width="fill_parent" android:layout_height="wrap_content">
</Button>

जबकि मुझे इसका उपयोग करके अपने नियमित पाठ का आकार (जो मैंने अपनी शैलियों में परिभाषित किया है। xml) बटन पर दिया गया है:

<Button
android:id="@+id/idRegularButton"
android:text="@string/regularSizeText"
android:layout_width="wrap_content" android:layout_height="wrap_content">
</Button>