यह वास्तव में बहुत निराशाजनक है कि आप इसे स्टाइल ( <item name="android:textAllCaps">true</item>
) या प्रत्येक XML लेआउट फ़ाइल पर TextAllCaps विशेषता के साथ नहीं कर सकते हैं , और ऐसा करने का एकमात्र तरीका वास्तव में स्ट्रिंग्स का उपयोग कर रहा है। प्रत्येक स्ट्रिंग पर (जब आप करते हैं) एक textViewXXX.setText (स्ट्रिंग)।
मेरे मामले में, मैं अपने कोड में हर जगह theString.toUpperCase () नहीं करना चाहता था, लेकिन ऐसा करने के लिए एक केंद्रीकृत स्थान होना चाहिए क्योंकि मेरे पास TextViews के साथ कुछ गतिविधियाँ और सूचियाँ आइटम थीं, जहाँ हर समय पूंजी होना चाहिए शीर्षक) और अन्य जिन्होंने ऐसा नहीं किया ... इसलिए ... कुछ लोग सोच सकते हैं कि यह एक ओवरकिल है, लेकिन मैंने अपना खुद का CapitalizedTextView वर्ग बनाया है, जो android.widget.TextView का विस्तार करता है और सेटटैक्स्ट विधि को मक्खी पर पाठ को बड़ा करता है।
कम से कम, यदि डिज़ाइन बदलता है या मुझे भविष्य के संस्करणों में पूंजीकृत पाठ को निकालने की आवश्यकता है, तो मुझे लेआउट फ़ाइलों में सामान्य TextView में बदलने की आवश्यकता है।
अब, यह ध्यान में रखें कि मैंने ऐसा इसलिए किया क्योंकि ऐप के डिज़ाइनर ने वास्तव में इस पाठ (शीर्षक) को CAPS में चाहा था, ऐप में मूल सामग्री कैपिटलाइज़ेशन से कोई फर्क नहीं पड़ता था, और मेरे पास अन्य सामान्य टेक्स्ट व्यू भी थे, जहां कैपिटलाइज़ेशन वास्तविक सामग्री के साथ आया ।
यह वर्ग है:
package com.realactionsoft.android.widget;
import android.content.Context;
import android.util.AttributeSet;
import android.view.ViewTreeObserver;
import android.widget.TextView;
public class CapitalizedTextView extends TextView implements ViewTreeObserver.OnPreDrawListener {
public CapitalizedTextView(Context context) {
super(context);
}
public CapitalizedTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CapitalizedTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public void setText(CharSequence text, BufferType type) {
super.setText(text.toString().toUpperCase(), type);
}
}
और जब भी आपको इसका उपयोग करने की आवश्यकता हो, बस इसे XML लेआउट में सभी पैकेज के साथ घोषित करें:
<com.realactionsoft.android.widget.CapitalizedTextView
android:id="@+id/text_view_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
कुछ का तर्क होगा कि TextView पर टेक्स्ट को स्टाइल करने का सही तरीका SpannableString का उपयोग करना है , लेकिन मुझे लगता है कि यह अधिक बड़ा ओवरकिल होगा, न कि अधिक संसाधन-उपभोग का उल्लेख करने के लिए क्योंकि आप TextView की तुलना में किसी अन्य वर्ग को तत्काल भेज देंगे।