2015-05-27 4 views
5

क्या कोई गतिविधि किसी विषय पर सेट की गई थीम के आधार पर शैली बदलने का कोई तरीका है? उदाहरण के लिए, मान लीजिए मेरे गतिविधि एक शैली TextViewStyle करने के लिए सेट के साथ एक TextView हैएंड्रॉइड - प्रति थीम एक स्टाइल ओवरराइडिंग

<TextView 
    style="@style/TextViewStyle"   
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="Text"/> 

यह मेरा TextViewStyle

<style name="TextViewStyle" parent="android:style/Widget.TextView"> 
     <item name="android:textStyle">bold</item> 
     <item name="android:textSize">8sp</item> 
     <item name="android:textColor">@android:color/holo_blue_dark</item> 
    </style> 

मेरी Styles.xml में है मैं दो विषयों

<style name="AppThemeLight" parent="android:Theme.Material.Light"> 

    </style> 


    <style name="AppThemeDark" parent="android:Theme.Material"> 

    </style> 

अब है , जब मेरे पास थीम को डार्क पर सेट किया गया है, तो मैं चाहता हूं कि यह थीम मेरे टेक्स्ट व्यू स्टाइल में सेट कुछ मानों को ओवरराइड करे। मैं ये कैसे करूं? मैं निम्नलिखित कोशिश की, लेकिन यह काम नहीं करता है

<!-- Override TextViewStyle style for AppThemeLight--> 
      <style name ="AppThemeLight.TextBlockStyle" parent="@style/TextBlockStyle"> 
       <item name="android:textColor">@color/my_purple</item> 
       <item name="android:textSize">20sp</item> 
      </style> 
<!-- Override TextViewStyle style for AppThemeDark--> 
      <style name ="AppThemeDark.TextBlockStyle" parent="@style/TextBlockStyle"> 
       <item name="android:textColor">@color/my_green</item> 
       <item name="android:textSize">40sp</item> 
      </style> 

उत्तर

11

ठीक है, इस सवाल को पोस्ट करने के 1 घंटे बाद, मैंने यह कैसे हासिल किया है! किसी और के लिए सहायक हो सकता है!

attrs.xml में सबसे पहले मैं निम्नलिखित परिभाषित:

मेरी style.xml में
<attr name="textBlockStyle" format="reference"/> 

<style name="TextBlockStyle" parent="android:style/Widget.TextView"> 
     <item name="android:textStyle">bold</item> 
     <item name="android:textSize">8sp</item> 
     <item name="android:textColor">@android:color/holo_blue_dark</item> 
    </style> 

    <style name="AppThemeLight" parent="android:Theme.Material.Light"> 
     <item name="android:windowNoTitle">true</item> 
     <item name="textBlockStyle">@style/AppThemeLightTextBlockStyle</item> 
    </style> 


    <style name="AppThemeDark" parent="android:Theme.Material"> 
     <item name="android:windowNoTitle">true</item> 
     <item name="textBlockStyle">@style/AppThemeDarkTextBlockStyle</item> 
    </style> 



    <!-- Override TextBlockStyle style for AppThemeLight --> 
    <style name ="AppThemeLightTextBlockStyle" parent="@style/TextBlockStyle"> 
     <item name="android:textColor">@color/my_purple</item> 
     <item name="android:textSize">20sp</item> 
    </style> 
    <!-- Override MyButton style for AppThemeDark --> 
    <style name ="AppThemeDarkTextBlockStyle" parent="@style/TextBlockStyle"> 
     <item name="android:textColor">@color/my_green</item> 
     <item name="android:textSize">40sp</item> 
    </style> 

सूचना कैसे मैं गुण मैं एक शैली को संदर्भित करने परिभाषित का उपयोग

<item name="textBlockStyle">@style/AppThemeLightTextBlockStyle</item> 

अंत में, मेरे तत्व पर मैंने इस शैली को "शैली ="? टेक्स्टब्लॉक स्टाइल "सेट किया है:

<TextView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     style="?textBlockStyle" 
     android:text="THIS IS SOME STLE...." 
     android:gravity="center" /> 

जब मैं गहरा या हल्का करने के लिए मेरी गतिविधि विषय निर्धारित करते हैं, सही textButtenStyle

0

अपनी गतिविधि शैली के लिए एक पाठ-शैली तत्व जोड़ें और यह वांछित शैली के बराबर है, फिर जब गतिविधि सभी textViews भरी हुई है अंदर शैली के अंदर निर्दिष्ट करना होगा बनाने के अपने थीम जब तक आप इसे अपने टेक्स्ट में ओवरराइड नहीं करते हैं

+0

हम्म यकीन नहीं मैं तुम्हारा क्या मतलब है .... क्या आप थोड़ा उदाहरण दे सकते हैं? मैं प्रति विषय एक डिफ़ॉल्ट पाठ स्टाइल ओवरराइड करने में सक्षम होना चाहता हूँ। – AhmedW

+0

@ शैली/yourTextViewStyle अपनी गतिविधि शैली के अंदर कुछ कोशिश करें – Exception

0

उपयोग किया जाएगा अपनी गतिविधि शैली के अंदर की तरह

<item name="android:textAppearance">@style/yourTextViewStyle</item> 

कुछ प्रयास करें

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