2012-06-26 12 views
10

मेरे पास एक थीम है जहां गतिविधियों पर सभी टेक्स्टव्यू को पूंजीकृत करना चाहते थे। तो मैं एक शैली में textAllCaps सेट और फिर नीचेएंड्रॉइड टेक्स्ट थीम में सभी कैप्स

<style name="Widget.Apex.TextView" parent="android:Widget.TextView"> 
    <item name="android:textAppearance">?android:attr/textAppearanceSmall</item> 
    <item name="android:textAllCaps">true</item> 
</style> 

<style name="MyTheme" parent="@android:style/Theme.Holo"> 
    <item name="android:textViewStyle">@style/Widget.Apex.TextView</item> 
</style> 

की तरह मेरे विषय में textViewStyle पर लागू कर दुर्भाग्य से यह मेरे आवेदन शीर्षक, उपशीर्षक ActionBar मोड़ के पक्ष प्रभाव था, और popmenu आइटम पूंजीकृत। तो मैंने सोचा कि मैं केवल एक्शनबार स्टाइल, टेक्स्ट एपपेरेंस लार्जपॉपअपमेनू, और textAppearanceSmallPopupMenu विशेष रूप से textAllCaps = false के साथ एक कस्टम शैली रखने के लिए मेरे विषय में विशेषताएँ सेट करूंगा। हालांकि, यह काम नहीं करता है। मुझे पता है कि मेरे विषयों को लागू किया जा रहा है क्योंकि यदि मैं टेक्स्ट रंग या टेक्स्ट स्टाइल सेट करता हूं तो वे दोनों शीर्षक और मेनू आइटम पर लागू होते हैं। क्या इन शैलियों में textAllCaps को ओवरराइड करना संभव है?

<style name="Widget.Apex.TextView" parent="android:Widget.TextView"> 
    <item name="android:textAppearance">?android:attr/textAppearanceSmall</item> 
    <item name="android:textAllCaps">true</item> 
</style> 
<style name="TextAppearance.Apex.Widget.ActionBar.Title" parent="android:TextAppearance.Holo.Widget.ActionBar.Title"> 
    <item name="android:textAllCaps">false</item> 
    <item name="android:textStyle">italic</item> 
</style> 
<style name="TextAppearance.Apex.Widget.ActionBar.Subtitle" parent="android:TextAppearance.Holo.Widget.ActionBar.Subtitle"> 
    <item name="android:textAllCaps">false</item> 
    <item name="android:textStyle">italic</item> 
    <item name="android:textColor">#FF0000</item> 
</style> 
<style name="TextAppearance.Apex.Widget.PopupMenu.Large" parent="android:TextAppearance.Holo.Widget.PopupMenu.Large"> 
    <item name="android:textAllCaps">false</item> 
    <item name="android:textStyle">italic</item> 
    <item name="android:textColor">#FF0000</item> 
</style> 
<style name="TextAppearance.Apex.Widget.PopupMenu.Small" parent="android:TextAppearance.Holo.Widget.PopupMenu.Small"> 
    <item name="android:textAllCaps">false</item> 
    <item name="android:textStyle">italic</item> 
    <item name="android:textColor">#FF0000</item> 
</style> 
<style name="Widget.Apex.ActionBar" parent="android:Widget.Holo.ActionBar"> 
    <item name="android:titleTextStyle">@style/TextAppearance.Apex.Widget.ActionBar.Title</item> 
    <item name="android:subtitleTextStyle">@style/TextAppearance.Apex.Widget.ActionBar.Subtitle</item> 
</style> 

<style name="MyTheme" parent="@android:style/Theme.Holo"> 
    <item name="android:actionBarStyle">@style/Widget.Apex.ActionBar</item> 
    <item name="android:textAppearanceLargePopupMenu">@style/TextAppearance.Apex.Widget.PopupMenu.Large</item> 
    <item name="android:textAppearanceSmallPopupMenu">@style/TextAppearance.Apex.Widget.PopupMenu.Small</item> 
    <item name="android:textViewStyle">@style/Widget.Apex.TextView</item> 
</style> 

धन्यवाद, जोनाथन

+0

क्या आप सभी कैप्स को विशिष्ट 'टेक्स्ट व्यू' बनाने की कोशिश कर रहे हैं? यदि नहीं, तो क्या आप सभी को बताएंगे कि आप सभी कैप्स बनाने की कोशिश कर रहे हैं? अपनी शैली को सेट करना आवश्यक नहीं हो सकता है। – adneal

+0

निश्चित रूप से। मैं सभी टेक्स्टव्यू बनाने की कोशिश कर रहा हूं जो क्रियाकलापों पर सभी कैप्स पर दिखाई देते हैं। हालांकि, दुष्प्रभाव यह है कि कुछ ऐसे स्थान हैं जो टेक्स्टव्यू का उपयोग करते हैं जो सभी कैप्स शैली प्राप्त कर रहे हैं, इसलिए मैं उन विशेष स्थानों में सभी कैप्स को पूर्ववत करना चाहता हूं। जिन स्थानों पर मैं वर्तमान में जानता हूं वे शीर्षक और मेनू पॉपअप हैं। –

उत्तर

8

Android एप्लिकेशन में AppCompattextAllCaps का उपयोग कर इस के लिए चारों ओर बड़े एपीआई (कम से कम 14)

एक काम का समर्थन करके होगा स्पष्ट रूप से इस तरह शैली स्थापित करने के लिए:

<android.support.v7.internal.widget.CompatTextView 
     style="@style/MyTextViewStyle" 
     android:id="@+id/text" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     app:textAllCaps="true"/> 

या वैकल्पिक रूप से विरासत में एक नई शैली का उपयोग करें ts textViewStyle और textAllCaps अपने चयन के किसी अन्य शैलियों के साथ विशेषता जोड़ता है:

<style name="MyCompatTextViewStyle" parent="MyTextViewStyle"> 
      <item name="textAllCaps">true</item> 
     </style> 

लेआउट में:

<android.support.v7.internal.widget.CompatTextView 
      style="@style/MyCompatTextViewStyle" 
      android:id="@+id/text" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content"/> 

नोट:

1> इस विजेट किसी भी लागू नहीं होंगे android:textViewStyle

2> इस विजेट का उपयोग आंतरिक जीआई के रूप में आपकी थीम में सेट की गई डिफ़ॉल्ट शैलियों पैकेज नाम का अर्थ है जिसका अर्थ यह वास्तव में सार्वजनिक एपीआई के लिए नहीं है। यह textAllCaps विशेषता में "पूरी तरह से बेक्ड" भी नहीं है, विशेषता को सीधे शैली/दृश्य पर होना चाहिए और पाठ में नहीं हो सकता है इसके लिए काम करने की शैली।

0

textAllCaps और android:textAllCaps दोनों के साथ प्रयास करें।

<style name="TextViewStyle"> 
     <item name="textAllCaps">true</item> 
     <item name="android:textAllCaps">true</item> 
</style> 

लेकिन मुझे लगता है कि यह केवल डिजाइन पुस्तकालय 23.2.0 या बाद में काम कर रहा है।

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