मान लीजिए कि मैं चाहता हूं कि TextViewमेरे ऐप में सभी उदाहरण हैं textColor="#ffffff"। क्या प्रत्येक के लिए इसे स्थापित करने के बजाय एक जगह पर सेट करने का कोई तरीका है TextView?
मान लीजिए कि मैं चाहता हूं कि TextViewमेरे ऐप में सभी उदाहरण हैं textColor="#ffffff"। क्या प्रत्येक के लिए इसे स्थापित करने के बजाय एक जगह पर सेट करने का कोई तरीका है TextView?
जवाबों:
वास्तव में, आप कस्टम जावा वर्ग या व्यक्तिगत रूप से शैली सेट करने की आवश्यकता के बिना TextViews (और अधिकांश अन्य अंतर्निहित विजेट) के लिए एक डिफ़ॉल्ट शैली सेट कर सकते हैं।
यदि आप themes.xmlएंड्रॉइड स्रोत में एक नज़र डालते हैं , तो आपको विभिन्न विजेट्स के लिए डिफ़ॉल्ट शैली के लिए विशेषताओं का एक गुच्छा दिखाई देगा। कुंजी वह textViewStyle(या editTextStyle, आदि) विशेषता है जिसे आप अपने कस्टम विषय में ओवरराइड करते हैं। आप इन्हें निम्न तरीके से ओवरराइड कर सकते हैं:
एक बनाएँ styles.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="MyTheme" parent="android:Theme">
<item name="android:textViewStyle">@style/MyTextViewStyle</item>
</style>
<style name="MyTextViewStyle" parent="android:Widget.TextView">
<item name="android:textColor">#F00</item>
<item name="android:textStyle">bold</item>
</style>
</resources>
तो बस उस विषय को अपने आवेदन में लागू करें AndroidManifest.xml:
<application […] android:theme="@style/MyTheme">…
और आपके सभी पाठ दृश्य MyTextViewStyle(इस उदाहरण में, बोल्ड और लाल) में परिभाषित शैली के लिए डिफ़ॉल्ट होंगे !
यह एपीआई स्तर 4 से उपकरणों पर परीक्षण किया गया था और यह बहुत अच्छा काम करता है।
<item name="android:textViewStyle">@style/MyTextViewStyle</item>शैली में आइटम MyTheme को शामिल करता हूं और फिर शैली को अपने एप्लिकेशन पर लागू करता हूं, तो मेरे सभी TextViewएस स्टाइल के अनुसार दिखाए जाएंगे (यहां तक कि एक्शन बार में एप्लिकेशन का नाम भी)। एक्शन बार के साथ मामले को कैसे ठीक करें? मैं चाहता हूं कि इसमें डिफ़ॉल्ट उपस्थिति हो। गितुब
<item name="android:textViewStyle">@style/MyTextViewStyle</item>कर सकते हैं, वहां ढूंढने में सक्षम हो सकते हैं और फिर वहां भी डाल सकते हैं, बस एक्शनबेर डिफॉल्ट (या कुछ इसी तरह) की ओर इशारा करते हुए
ऐसा करने के दो तरीके हैं:
आप res/valuesडायरेक्टरी पर XML फाइलें बनाकर अपनी खुद की शैलियों को परिभाषित कर सकते हैं । तो, मान लें कि आप लाल और बोल्ड टेक्स्ट चाहते हैं, तो आप इस सामग्री के साथ एक फ़ाइल बनाएँ:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="MyRedTheme" parent="android:Theme.Light">
<item name="android:textAppearance">@style/MyRedTextAppearance</item>
</style>
<style name="MyRedTextAppearance" parent="@android:style/TextAppearance">
<item name="android:textColor">#F00</item>
<item name="android:textStyle">bold</item>
</style>
</resources>
आप उदाहरण के लिए, जैसा चाहें वैसा नाम दे सकते हैं res/values/red.xml। फिर, केवल एक चीज जो आपको करनी है, वह उस विजेट का उपयोग कर रहा है जिसे आप चाहते हैं, उदाहरण के लिए:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
style="@style/MyRedTheme"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="This is red, isn't it?"
/>
</LinearLayout>
आगे के संदर्भ के लिए, आप इस लेख को पढ़ सकते हैं: एंड्रॉइड थीम और शैलियों को समझना
इसे प्राप्त करने का यह एक और संभावित तरीका है, और यह अपना स्वयं का प्रदान करना होगा TextViewजो पाठ का रंग हमेशा सेट करे जो आप चाहते हैं; उदाहरण के लिए:
import android.content.Context;
import android.graphics.Color;
import android.util.AttributeSet;
import android.widget.TextView;
public class RedTextView extends TextView{
public RedTextView(Context context, AttributeSet attrs) {
super(context, attrs);
setTextColor(Color.RED);
}
}
फिर, आपको इसे TextViewअपनी XML फ़ाइल में सामान्य मान लेना है:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<org.example.RedTextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="This is red, isn't it?"
/>
</LinearLayout>
आप एक या दूसरे विकल्प का उपयोग करते हैं या नहीं यह आपकी आवश्यकताओं पर निर्भर करता है। यदि केवल एक चीज जिसे आप करना चाहते हैं, उपस्थिति को संशोधित कर रहा है, तो सबसे अच्छा तरीका पहला है। दूसरी ओर, यदि आप उपस्थिति बदलना चाहते हैं और अपने विजेट्स में कुछ नई कार्यक्षमता जोड़ना चाहते हैं, तो दूसरा रास्ता तय करना है।
custom_view_layout.xmlफ़ाइल में इसका उपयोग क्यों नहीं कर सकते हैं जो कस्टम क्लास को फुलाए जाने के लिए उपयोग की जाती है?
डिफ़ॉल्ट पाठ रंग में TextView, android:textColorTertiaryइच्छित रंग में अपने विषय में सेट करें:
<item name="android:textColorTertiary">@color/your_text_color</item>
यदि आप समर्थन पुस्तकालय का उपयोग करते हैं, तो कई अन्य एंड्रॉइड नियंत्रणों के रंगों को फ्रेमवर्क विशेषताओं, या लाइब्रेरी विशेषताओं का उपयोग करके नियंत्रित किया जा सकता है।
गुण आप सेट कर सकते हैं की एक सूची के लिए, बाहर की जाँच एंड्रॉयड स्रोत कोड की styles.xmlऔर themes.xml, या इस बहुत उपयोगी सार दान ल्यू से, प्रत्येक मान बदलने का प्रयास करें और वे क्या स्क्रीन पर बदल देखें।
एक शैली को परिभाषित करें और प्रत्येक विजेट पर इसका उपयोग करें, एक थीम को परिभाषित करें जो उस विजेट के लिए एंड्रॉइड डिफ़ॉल्ट को ओवरराइड करता है, या एक स्ट्रिंग संसाधन को परिभाषित करता है और प्रत्येक विजेट में इसे संदर्भित करता है।