2013-08-29 15 views
21

पर एक अलग थीम कैसे सेट करें मैंने पूरे ऐप के लिए एक डिफ़ॉल्ट थीम सेट की है। यह styles.xml में इस प्रकार परिभाषित किया है:लेआउट

<style name="DarkTheme" parent="@android:style/Theme.Holo"> 
     <!-- Customization here --> 
    </style> 

प्रकट में यह अनुप्रयोग के लिए मुख्य विषय के रूप में प्रकाश विषय घोषित किया जाता है:

<style name="DefaultTheme" parent="@android:style/Theme.Holo.Light"> 
     <!-- Customization here --> 
    </style> 

मैं भी एक गहरे रंग की थीम परिभाषित किया है

<application 
    ... 
    android:theme="@style/DefaultTheme" > 

अब यह ठीक काम कर रहा है, लेकिन एक गतिविधि में, मुझे एक ही लेआउट के लिए एक अलग थीम सेट करने की आवश्यकता है। कुछ इस तरह:

<LinearLayout 
    style="@style/DarkTheme"> 
    ... 

मैं इस अच्छे से कार्य करती उम्मीद थी, और लागू करने के लिए:

+--------------------------------------------------+ 
    |   Parent Linear layout (default theme)  | 
    |             | 
    | +------------------------------------+ +-------+ | 
    | |         | |  | | 
    | |  Left linear layout    | |  | | 
    | |  (default theme)    | |  | | 
    | |         | |  | | 
    | |         | |  | | 
    | |         | | ·<----------- Right Linear Layout 
    | |         | |  | |  (Need it in dark theme) 
    | |         | |  | | 
    | |         | |  | | 
    | +------------------------------------+ +-------+ | 
    +--------------------------------------------------+ 

लेआउट xml फ़ाइल में मैं सबसे दायीं ओर का बच्चा LinearLayout के लिए एक थीम सेट करने के लिए कोशिश कर रहा हूँ केवल सही लेआउट के लिए अंधेरा विषय (और इसके बच्चे के विचार), लेकिन यह काम नहीं कर रहा है। मैंने @ स्टाइल को एक अंतर्निहित @android: शैली के साथ बदलने का प्रयास नहीं किया है। मैंने इसे लेआउट संपादक और वास्तविक डिवाइस/सिम्युलेटर पर परीक्षण किया है।

क्या एक कस्टम थीम या शैली को एक ही लेआउट में लागू करना संभव है?

+0

मैं इसे पुराने सवाल यह है कि पता है, कर रहे थे आप इसे करने के लिए एक जवाब खोजने के लिए सक्षम? –

उत्तर

20

यह अब दृश्य पर android:theme संपत्ति का उपयोग कर और आप की तरह किसी भी विषय के लिए निर्धारित कर उसे संभव है। ध्यान दें कि बच्चे के विचार उनके माता-पिता के विषय का उत्तराधिकारी होंगे।

+1

एंड्रॉइड मार्शमलो के रूप में –

12

AFAIK आप एक्सएमएल का उपयोग कर लेआउट में थीम लागू नहीं कर सकते हैं।

हालांकि, आप प्रोग्राम्स को लेआउट बनाते समय थीम लागू करने के लिए ContextThemeWrapper() का उपयोग कर सकते हैं।

LinearLayout darkThemeLayout = new LinearLayout(new ContextThemeWrapper(context, R.style.DarkTheme)); 
5
समर्थन पुस्तकालय के साथ

आप कर सकते हैं:

app:theme="R.style.MyTheme" 
संबंधित मुद्दे