स्टाइल और थीम

Compose को आज़माएं
Jetpack Compose, Android के लिए सुझाई गई यूज़र इंटरफ़ेस (यूआई) टूलकिट है. Compose में थीमिंग इस्तेमाल करने का तरीका जानें.

Android पर स्टाइल और थीम की मदद से, अपने ऐप्लिकेशन के डिज़ाइन की जानकारी को यूज़र इंटरफ़ेस (यूआई) के स्ट्रक्चर और व्यवहार से अलग किया जा सकता है. यह वेब डिज़ाइन में स्टाइलशीट की तरह ही होता है.

स्टाइल, एट्रिब्यूट का एक कलेक्शन होता है. इससे किसी एक View के दिखने का तरीका तय होता है. स्टाइल में, फ़ॉन्ट का रंग, फ़ॉन्ट का साइज़, बैकग्राउंड का रंग वगैरह जैसी एट्रिब्यूट की जानकारी दी जा सकती है.

थीम, एट्रिब्यूट का एक कलेक्शन होती है. इसे किसी एक व्यू के बजाय, पूरे ऐप्लिकेशन, गतिविधि या व्यू हैरारकी (व्यू और व्यू ग्रुप के लेआउट का क्रम) पर लागू किया जाता है. जब कोई थीम लागू की जाती है, तो ऐप्लिकेशन या गतिविधि का हर व्यू, थीम के उन सभी एट्रिब्यूट को लागू करता है जो उसके साथ काम करते हैं. थीम, स्टेटस बार और विंडो बैकग्राउंड जैसे नॉन-व्यू एलिमेंट पर भी स्टाइल लागू कर सकती हैं.

स्टाइल और थीम को res/values/ में मौजूद स्टाइल रिसॉर्स फ़ाइल में डिक्लेयर किया जाता है. आम तौर पर, इसका नाम styles.xml होता है.

पहली इमेज. एक ही गतिविधि पर दो थीम लागू की गई हैं: Theme.AppCompat (बाईं ओर) और Theme.AppCompat.Light (दाईं ओर).

थीम बनाम स्टाइल

थीम और स्टाइल में कई समानताएं होती हैं. हालांकि, इनका इस्तेमाल अलग-अलग कामों के लिए किया जाता है. थीम और स्टाइल का बुनियादी स्ट्रक्चर एक जैसा होता है. यह एक की-वैल्यू पेयर होता है, जो एट्रिब्यूट को संसाधनों से मैप करता है.

स्टाइल, किसी खास तरह के व्यू के लिए एट्रिब्यूट तय करती है. उदाहरण के लिए, एक स्टाइल में बटन के एट्रिब्यूट तय किए जा सकते हैं. किसी स्टाइल में तय किया गया हर एट्रिब्यूट, लेआउट फ़ाइल में सेट किया जा सकता है. सभी एट्रिब्यूट को किसी स्टाइल में एक्सट्रैक्ट करने से, उन्हें कई विजेट में इस्तेमाल करना और मैनेज करना आसान हो जाता है.

थीम, नाम वाले संसाधनों का एक कलेक्शन तय करती है. इसे स्टाइल, लेआउट, विजेट वगैरह से रेफ़र किया जा सकता है. थीम, Android के संसाधनों को colorPrimary जैसे सिमैंटिक नाम असाइन करती हैं.

स्टाइल और थीम को एक साथ काम करने के लिए डिज़ाइन किया गया है. उदाहरण के लिए, आपके पास ऐसी स्टाइल हो सकती है जिसमें यह बताया गया हो कि बटन का एक हिस्सा colorPrimary है और दूसरा हिस्सा colorSecondary है. उन रंगों की असल परिभाषाएं, थीम में दी गई हैं. जब डिवाइस नाइट मोड में जाता है, तो आपका ऐप्लिकेशन "लाइट" थीम से "डार्क" थीम पर स्विच कर सकता है. इससे उन सभी रिसॉर्स के नाम की वैल्यू बदल जाती हैं. आपको स्टाइल बदलने की ज़रूरत नहीं है, क्योंकि स्टाइल में सिमैंटिक नामों का इस्तेमाल किया जा रहा है, न कि रंग की खास परिभाषाओं का.

थीम और स्टाइल एक साथ कैसे काम करते हैं, इस बारे में ज़्यादा जानने के लिए, Android स्टाइलिंग: थीम बनाम स्टाइल ब्लॉग पोस्ट देखें.

कोई स्टाइल बनाना और उसे लागू करना

नई स्टाइल बनाने के लिए, अपने प्रोजेक्ट की res/values/styles.xml फ़ाइल खोलें. आपको जो भी स्टाइल बनानी है उसके लिए, यह तरीका अपनाएं:

  1. <style> एलिमेंट जोड़ें और उसे ऐसा नाम दें जिससे स्टाइल की खास तौर पर पहचान की जा सके.
  2. आपको जिस स्टाइल एट्रिब्यूट को तय करना है उसके लिए एक <item> एलिमेंट जोड़ें. हर आइटम में मौजूद name, एक एट्रिब्यूट के बारे में बताता है. इस एट्रिब्यूट का इस्तेमाल, लेआउट में एक्सएमएल एट्रिब्यूट के तौर पर किया जाता है. <item> एलिमेंट में मौजूद वैल्यू, उस एट्रिब्यूट की वैल्यू होती है.

उदाहरण के लिए, मान लें कि आपने यह स्टाइल तय किया है:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="GreenText" parent="TextAppearance.AppCompat">
        <item name="android:textColor">#00FF00</item>
    </style>
</resources>

किसी व्यू पर स्टाइल लागू करने के लिए, यह तरीका अपनाएं:

<TextView
    style="@style/GreenText"
    ... />

स्टाइल में बताया गया हर एट्रिब्यूट, उस व्यू पर लागू होता है. हालांकि, इसके लिए ज़रूरी है कि व्यू उसे स्वीकार करे. व्यू, उन एट्रिब्यूट को अनदेखा कर देता है जिन्हें वह स्वीकार नहीं करता.

हालांकि, अलग-अलग व्यू पर स्टाइल लागू करने के बजाय, आम तौर पर अपने पूरे ऐप्लिकेशन, गतिविधि या व्यू के कलेक्शन के लिए, स्टाइल को थीम के तौर पर लागू किया जाता है. इसके बारे में इस गाइड के दूसरे सेक्शन में बताया गया है.

किसी स्टाइल को एक्सटेंड और कस्टमाइज़ करना

अपनी स्टाइल बनाते समय, फ़्रेमवर्क या सहायता लाइब्रेरी से किसी मौजूदा स्टाइल को हमेशा एक्सटेंड करें. इससे, प्लैटफ़ॉर्म के यूज़र इंटरफ़ेस (यूआई) की स्टाइल के साथ काम करने की सुविधा बनी रहती है. किसी स्टाइल को एक्सटेंड करने के लिए, parent एट्रिब्यूट की मदद से वह स्टाइल तय करें जिसे आपको एक्सटेंड करना है. इसके बाद, इनहेरिट किए गए स्टाइल एट्रिब्यूट को बदला जा सकता है और नए एट्रिब्यूट जोड़े जा सकते हैं.

उदाहरण के लिए, Android प्लैटफ़ॉर्म के डिफ़ॉल्ट टेक्स्ट अपियरेंस को इनहेरिट किया जा सकता है और उसमें इस तरह बदलाव किया जा सकता है:

<style name="GreenText" parent="@android:style/TextAppearance">
    <item name="android:textColor">#00FF00</item>
</style>

हालांकि, अपने ऐप्लिकेशन की मुख्य स्टाइल को हमेशा Android सपोर्ट लाइब्रेरी से इनहेरिट करें. सपोर्ट लाइब्रेरी में मौजूद स्टाइल, हर वर्शन में उपलब्ध यूज़र इंटरफ़ेस (यूआई) एट्रिब्यूट के लिए हर स्टाइल को ऑप्टिमाइज़ करके, साथ काम करने की सुविधा उपलब्ध कराती हैं. Support Library की स्टाइल का नाम अक्सर प्लैटफ़ॉर्म की स्टाइल से मिलता-जुलता होता है. हालांकि, इसमें AppCompat शामिल होता है.

किसी लाइब्रेरी या अपने प्रोजेक्ट से स्टाइल इनहेरिट करने के लिए, पैरंट स्टाइल का नाम बताएं. हालांकि, इसमें पिछले उदाहरण में दिखाया गया @android:style/ हिस्सा शामिल नहीं होना चाहिए. उदाहरण के लिए, यहां दिए गए उदाहरण में, टेक्स्ट के दिखने की स्टाइल को सपोर्ट लाइब्रेरी से लिया गया है:

<style name="GreenText" parent="TextAppearance.AppCompat">
    <item name="android:textColor">#00FF00</item>
</style>

parent एट्रिब्यूट का इस्तेमाल करने के बजाय, स्टाइल के नाम को डॉट नोटेशन के साथ बढ़ाकर भी स्टाइल को इनहेरिट किया जा सकता है. हालांकि, प्लैटफ़ॉर्म से स्टाइल इनहेरिट नहीं की जा सकतीं. इसका मतलब है कि अपनी स्टाइल के नाम से पहले, उस स्टाइल का नाम जोड़ें जिसे आपको इनहेरिट करना है. दोनों नामों को पीरियड से अलग करें. आम तौर पर, ऐसा सिर्फ़ अपनी स्टाइल को एक्सटेंड करते समय किया जाता है, न कि अन्य लाइब्रेरी की स्टाइल को एक्सटेंड करते समय. उदाहरण के लिए, यहां दी गई स्टाइल, पिछले उदाहरण में मौजूद GreenText की सभी स्टाइल को इनहेरिट करती है. इसके बाद, टेक्स्ट का साइज़ बढ़ाती है:

<style name="GreenText.Large">
    <item name="android:textSize">22dp</item>
</style>

ज़्यादा नाम जोड़कर, इस तरह की स्टाइल को जितनी बार चाहें उतनी बार इनहेरिट किया जा सकता है.

<item> टैग के साथ कौनसे एट्रिब्यूट इस्तेमाल किए जा सकते हैं, यह जानने के लिए अलग-अलग क्लास रेफ़रंस में "एक्सएमएल एट्रिब्यूट" टेबल देखें. सभी व्यू, बेस View क्लास के एक्सएमएल एट्रिब्यूट के साथ काम करते हैं. साथ ही, कई व्यू अपने खास एट्रिब्यूट जोड़ते हैं. उदाहरण के लिए, TextView एक्सएमएल एट्रिब्यूट में android:inputType एट्रिब्यूट शामिल होता है. इसे इनपुट पाने वाले टेक्स्ट व्यू पर लागू किया जा सकता है, जैसे कि EditText विजेट.

किसी स्टाइल को थीम के तौर पर लागू करना

स्टाइल बनाने के तरीके से ही थीम बनाई जा सकती है. दोनों में अंतर यह है कि इन्हें लागू कैसे किया जाता है: किसी व्यू पर style एट्रिब्यूट की मदद से स्टाइल लागू करने के बजाय, android:theme एट्रिब्यूट की मदद से थीम लागू की जाती है. इसके लिए, AndroidManifest.xml फ़ाइल में मौजूद <application> टैग या <activity> टैग का इस्तेमाल किया जाता है.

उदाहरण के लिए, पूरे ऐप्लिकेशन पर Android सपोर्ट लाइब्रेरी की मटीरियल डिज़ाइन वाली "गहरे रंग" की थीम लागू करने का तरीका यहां बताया गया है:

<manifest ... >
    <application android:theme="@style/Theme.AppCompat" ... >
    </application>
</manifest>

सिर्फ़ एक गतिविधि पर "लाइट" थीम लागू करने का तरीका यहां बताया गया है:

<manifest ... >
    <application ... >
        <activity android:theme="@style/Theme.AppCompat.Light" ... >
        </activity>
    </application>
</manifest>

ऐप्लिकेशन या गतिविधि में मौजूद हर व्यू, दी गई थीम में तय की गई स्टाइल में से उन स्टाइल को लागू करता है जो उसके साथ काम करती हैं. अगर कोई व्यू, स्टाइल में बताए गए कुछ एट्रिब्यूट के साथ ही काम करता है, तो वह सिर्फ़ उन एट्रिब्यूट को लागू करता है. साथ ही, उन एट्रिब्यूट को अनदेखा कर देता है जो काम नहीं करते.

Android 5.0 (एपीआई लेवल 21) और Android Support Library v22.1 से, अपनी लेआउट फ़ाइल में किसी व्यू के लिए android:theme एट्रिब्यूट भी तय किया जा सकता है. इससे उस व्यू और उसके चाइल्ड व्यू की थीम बदल जाती है. यह आपके इंटरफ़ेस के किसी खास हिस्से में थीम के कलर पैलेट बदलने के लिए मददगार है.

पिछले उदाहरणों में, Android सपोर्ट लाइब्रेरी से मिली Theme.AppCompat जैसी थीम को लागू करने का तरीका बताया गया है. हालांकि, आम तौर पर थीम को अपने ऐप्लिकेशन के ब्रैंड के हिसाब से पसंद के मुताबिक बनाया जाता है. ऐसा करने का सबसे अच्छा तरीका यह है कि इन स्टाइल को सपोर्ट लाइब्रेरी से एक्सटेंड करें और कुछ एट्रिब्यूट को बदलें. इसके बारे में यहां दिए गए सेक्शन में बताया गया है.

स्टाइल की हैरारकी

Android, आपके Android ऐप्लिकेशन में एट्रिब्यूट सेट करने के कई तरीके उपलब्ध कराता है. उदाहरण के लिए, एट्रिब्यूट को सीधे लेआउट में सेट किया जा सकता है, किसी व्यू पर स्टाइल लागू की जा सकती है, लेआउट पर थीम लागू की जा सकती है, और प्रोग्राम के हिसाब से एट्रिब्यूट भी सेट किए जा सकते हैं.

अपने ऐप्लिकेशन को स्टाइल करने का तरीका चुनते समय, Android की स्टाइल की हैरारकी का ध्यान रखें. आम तौर पर, एक जैसा लुक बनाए रखने के लिए, ज़्यादा से ज़्यादा थीम और स्टाइल का इस्तेमाल करें. अगर एक ही एट्रिब्यूट को कई जगहों पर तय किया जाता है, तो इस सूची से तय होता है कि आखिर में कौनसे एट्रिब्यूट लागू किए जाएंगे. सूची को सबसे ज़्यादा प्राथमिकता से लेकर सबसे कम प्राथमिकता के क्रम में लगाया जाता है.

  1. TextView से ली गई क्लास में टेक्स्ट स्पैन का इस्तेमाल करके, वर्ण या पैराग्राफ़-लेवल की स्टाइल लागू करना.
  2. प्रोग्राम के हिसाब से, अपने-आप होने वाली प्रोसेस का इस्तेमाल करके एट्रिब्यूट लागू करना.
  3. किसी व्यू पर सीधे तौर पर अलग-अलग एट्रिब्यूट लागू करना.
  4. किसी व्यू पर स्टाइल लागू करना.
  5. डिफ़ॉल्ट स्टाइल.
  6. व्यू के कलेक्शन, किसी गतिविधि या पूरे ऐप्लिकेशन पर थीम लागू करना.
  7. व्यू के हिसाब से कुछ स्टाइलिंग लागू करना, जैसे कि TextView पर TextAppearance सेट करना.

दूसरी इमेज. span की स्टाइलिंग, textAppearance की स्टाइलिंग को बदल देती है.

TextAppearance

स्टाइल की एक सीमा यह है कि किसी View पर सिर्फ़ एक स्टाइल लागू की जा सकती है. हालांकि, TextView में TextAppearance एट्रिब्यूट भी तय किया जा सकता है. यह स्टाइल की तरह ही काम करता है, जैसा कि इस उदाहरण में दिखाया गया है:

<TextView
    ...
    android:textAppearance="@android:style/TextAppearance.Material.Headline"
    android:text="This text is styled via textAppearance!" />

TextAppearance की मदद से, टेक्स्ट के लिए खास स्टाइल तय की जा सकती है. साथ ही, View की स्टाइल को अन्य कामों के लिए उपलब्ध रखा जा सकता है. हालांकि, ध्यान दें कि अगर आपने View पर या किसी स्टाइल में सीधे तौर पर कोई टेक्स्ट एट्रिब्यूट तय किया है, तो वे वैल्यू TextAppearance वैल्यू को बदल देंगी.

TextAppearance, स्टाइलिंग एट्रिब्यूट के सबसेट के साथ काम करता है. ये एट्रिब्यूट, TextView में उपलब्ध होते हैं. एट्रिब्यूट की पूरी सूची देखने के लिए, TextAppearance पर जाएं.

TextView के कुछ सामान्य एट्रिब्यूट शामिल नहीं किए गए हैं. जैसे, lineHeight[Multiplier|Extra], lines, breakStrategy, और hyphenationFrequency. TextAppearance, वर्ण के लेवल पर काम करता है, न कि पैराग्राफ़ के लेवल पर. इसलिए, पूरे लेआउट पर असर डालने वाले एट्रिब्यूट काम नहीं करते.

डिफ़ॉल्ट थीम को पसंद के मुताबिक बनाना

जब Android Studio की मदद से कोई प्रोजेक्ट बनाया जाता है, तो वह आपके ऐप्लिकेशन पर डिफ़ॉल्ट रूप से मटीरियल डिज़ाइन थीम लागू करता है. ऐसा आपके प्रोजेक्ट की styles.xml फ़ाइल में तय किए गए तरीके से होता है. यह AppTheme स्टाइल, सपोर्ट लाइब्रेरी की थीम को एक्सटेंड करती है. साथ ही, इसमें कलर एट्रिब्यूट के लिए ओवरराइड शामिल होते हैं. इनका इस्तेमाल, यूज़र इंटरफ़ेस (यूआई) के मुख्य एलिमेंट करते हैं. जैसे, ऐप्लिकेशन बार और फ़्लोट करने वाला कार्रवाई बटन, अगर इस्तेमाल किया गया हो. इसलिए, दिए गए रंगों को अपडेट करके, अपने ऐप्लिकेशन के कलर डिज़ाइन को तुरंत पसंद के मुताबिक बनाया जा सकता है.

उदाहरण के लिए, आपकी styles.xml फ़ाइल कुछ ऐसी दिखती है:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

स्टाइल की वैल्यू, असल में अन्य कलर रिसॉर्स के रेफ़रंस होते हैं. इन्हें प्रोजेक्ट की res/values/colors.xml फ़ाइल में तय किया जाता है. यह वह फ़ाइल है जिसमें बदलाव करके, रंग बदले जा सकते हैं. डाइनैमिक कलर और पसंद के मुताबिक बनाए गए अन्य रंगों की मदद से, उपयोगकर्ता अनुभव को बेहतर बनाने के लिए, मटीरियल डिज़ाइन कलर की खास जानकारी देखें.

रंगों की जानकारी मिलने के बाद, res/values/colors.xml में वैल्यू अपडेट करें:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!--   Color for the app bar and other primary UI elements. -->
    <color name="colorPrimary">#3F51B5</color>

    <!--   A darker variant of the primary color, used for
           the status bar (on Android 5.0+) and contextual app bars. -->
    <color name="colorPrimaryDark">#303F9F</color>

    <!--   a secondary color for controls like checkboxes and text fields. -->
    <color name="colorAccent">#FF4081</color>
</resources>

इसके बाद, अपनी पसंद के मुताबिक अन्य स्टाइल को बदला जा सकता है. उदाहरण के लिए, गतिविधि के बैकग्राउंड का रंग इस तरह बदला जा सकता है:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    ...
    <item name="android:windowBackground">@color/activityBackground</item>
</style>

अपनी थीम में इस्तेमाल किए जा सकने वाले एट्रिब्यूट की सूची देखने के लिए, R.styleable.Theme पर एट्रिब्यूट की टेबल देखें. अपने लेआउट में व्यू के लिए स्टाइल जोड़ते समय, व्यू क्लास के रेफ़रंस में "एक्सएमएल एट्रिब्यूट" टेबल देखकर भी एट्रिब्यूट ढूंढे जा सकते हैं. उदाहरण के लिए, सभी व्यू, बेस View क्लास के एक्सएमएल एट्रिब्यूट के साथ काम करते हैं.

ज़्यादातर एट्रिब्यूट, खास तरह के व्यू पर लागू होते हैं. हालांकि, कुछ एट्रिब्यूट सभी व्यू पर लागू होते हैं. हालांकि, R.styleable.Theme पर दिए गए कुछ थीम एट्रिब्यूट, गतिविधि विंडो पर लागू होते हैं, न कि लेआउट में मौजूद व्यू पर. उदाहरण के लिए, windowBackground विंडो के बैकग्राउंड को बदलता है और windowEnterTransition गतिविधि शुरू होने पर इस्तेमाल किए जाने वाले ट्रांज़िशन ऐनिमेशन को तय करता है. ज़्यादा जानकारी के लिए, ऐनिमेशन का इस्तेमाल करके कोई गतिविधि शुरू करना लेख पढ़ें.

Android सपोर्ट लाइब्रेरी में अन्य एट्रिब्यूट भी होते हैं. इनका इस्तेमाल करके, Theme.AppCompat से एक्सटेंड की गई थीम को पसंद के मुताबिक बनाया जा सकता है. जैसे, पिछले उदाहरण में दिखाया गया colorPrimary एट्रिब्यूट. इन्हें लाइब्रेरी की attrs.xml फ़ाइल में सबसे अच्छी तरह देखा जा सकता है.

सपोर्ट लाइब्रेरी में अलग-अलग थीम भी उपलब्ध हैं. हो सकता है कि आप पिछले उदाहरण में दिखाई गई थीम के बजाय, उन्हें एक्सटेंड करना चाहें. उपलब्ध थीम देखने के लिए, लाइब्रेरी की themes.xml फ़ाइल सबसे सही जगह है.

वर्शन के हिसाब से स्टाइल जोड़ना

अगर Android के नए वर्शन में थीम के ऐसे एट्रिब्यूट जोड़े जाते हैं जिनका आपको इस्तेमाल करना है, तो उन्हें अपनी थीम में जोड़ा जा सकता है. साथ ही, वे पुराने वर्शन के साथ भी काम करते रहेंगे. इसके लिए, आपको values डायरेक्ट्री में सेव की गई एक और styles.xml फ़ाइल की ज़रूरत होगी. इसमें संसाधन के वर्शन का क्वालीफ़ायर शामिल होना चाहिए:

res/values/styles.xml        # themes for all versions
res/values-v21/styles.xml    # themes for API level 21+ only

values/styles.xml फ़ाइल में मौजूद स्टाइल, सभी वर्शन के लिए उपलब्ध हैं. इसलिए, values-v21/styles.xml में मौजूद आपकी थीम, उन्हें इनहेरिट कर सकती हैं. इसका मतलब है कि "बेस" थीम से शुरुआत करके और फिर उसे अपने वर्शन के हिसाब से स्टाइल में बढ़ाकर, स्टाइल को डुप्लीकेट करने से बचा जा सकता है.

उदाहरण के लिए, Android 5.0 (एपीआई लेवल 21) और इसके बाद के वर्शन के लिए विंडो ट्रांज़िशन का एलान करने के लिए, आपको नए एट्रिब्यूट इस्तेमाल करने होंगे. इसलिए, res/values/styles.xml में आपकी बेस थीम कुछ ऐसी दिख सकती है:

<resources>
    <!-- Base set of styles that apply to all versions. -->
    <style name="BaseAppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="colorPrimary">@color/primaryColor</item>
        <item name="colorPrimaryDark">@color/primaryTextColor</item>
        <item name="colorAccent">@color/secondaryColor</item>
    </style>

    <!-- Declare the theme name that's actually applied in the manifest file. -->
    <style name="AppTheme" parent="BaseAppTheme" />
</resources>

इसके बाद, res/values-v21/styles.xml में वर्शन के हिसाब से स्टाइल जोड़ें. इसके लिए, यह तरीका अपनाएं:

<resources>
    <!-- extend the base theme to add styles available only with API level 21+ -->
    <style name="AppTheme" parent="BaseAppTheme">
        <item name="android:windowActivityTransitions">true</item>
        <item name="android:windowEnterTransition">@android:transition/slide_right</item>
        <item name="android:windowExitTransition">@android:transition/slide_left</item>
    </style>
</resources>

अब अपनी मेनिफ़ेस्ट फ़ाइल में AppTheme लागू किया जा सकता है. इसके बाद, सिस्टम हर वर्शन के लिए उपलब्ध स्टाइल चुनता है.

अलग-अलग डिवाइसों के लिए वैकल्पिक संसाधनों का इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, वैकल्पिक संसाधन उपलब्ध कराना लेख पढ़ें.

विजेट की स्टाइल को पसंद के मुताबिक बनाना

फ़्रेमवर्क और सहायता लाइब्रेरी में मौजूद हर विजेट की एक डिफ़ॉल्ट स्टाइल होती है. उदाहरण के लिए, जब Support Library की किसी थीम का इस्तेमाल करके अपने ऐप्लिकेशन को स्टाइल किया जाता है, तो Button के इंस्टेंस को Widget.AppCompat.Button स्टाइल का इस्तेमाल करके स्टाइल किया जाता है. अगर आपको किसी बटन पर कोई दूसरी विजेट स्टाइल लागू करनी है, तो अपनी लेआउट फ़ाइल में style एट्रिब्यूट का इस्तेमाल करके ऐसा किया जा सकता है. उदाहरण के लिए, यहां लाइब्रेरी की बॉर्डरलेस बटन स्टाइल लागू की गई है:

<Button
    style="@style/Widget.AppCompat.Button.Borderless"
    ... />

अगर आपको यह स्टाइल सभी बटन पर लागू करना है, तो इसे अपनी थीम के buttonStyle में इस तरह से एलान किया जा सकता है:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="buttonStyle">@style/Widget.AppCompat.Button.Borderless</item>
    ...
</style>

किसी अन्य स्टाइल को एक्सटेंड करने की तरह ही, विजेट स्टाइल को भी एक्सटेंड किया जा सकता है. इसके बाद, अपने लेआउट या थीम में कस्टम विजेट स्टाइल लागू किया जा सकता है.

अन्य संसाधन

थीम और स्टाइल के बारे में ज़्यादा जानने के लिए, यहां दिए गए अन्य संसाधन देखें:

ब्लॉग पोस्ट