दिलचस्प पोस्ट
उद्देश्य-सी में NSMutableArray से डुप्लिकेट मानों को निकालने का सबसे अच्छा तरीका है? INO सेटअप इंस्टॉलर चलाने पर मैं PATH परिवेश चर को कैसे संशोधित करूं? विंडोज पर एफसीएनटीएल विकल्प स्विफ्ट में वापस बटन पाठ को कैसे सेट करें जावा क्लास के इंटरफेस को क्यों पसंद किया जाना चाहिए? एंड्रॉइड: पूरा होने के बाद एनिमेशन स्थिति रीसेट करता है पायथन भारित रैंडम क्या HTTPS हेडर एन्क्रिप्ट किए गए हैं? एक शब्दकोश से एक आइटम हटाएं चेतावनी बॉक्स में "इस पृष्ठ को अतिरिक्त संवाद बनाने से रोकें" क्यों दिखाई देता है? कन्स्ट्रक्टर से सी ++ आभासी फ़ंक्शन विजेट में कस्टम टाइपफ़ेस का उपयोग कैसे करें? तीन अंक दिए गए परबोलो के शिखर की गणना कैसे करें कैसे एक परियोजना पर cmc को दोनों vcxproj समर्थन करने के लिए? एक्स 86 इनलाइन असेंबली प्रोग्रामिंग में एफएफएफएफएफएफबीबी जैसे हेक्स वैल्यू का प्रतिनिधित्व कैसे करें?

एक्शनबार पाठ रंग

मैं ActionBar का टेक्स्ट रंग कैसे बदल सकता / सकती हूं? मैंने होलो लाइट थीम को विरासत में मिला है, मैं एक्शनबार की पृष्ठभूमि को बदलने में सक्षम हूं, लेकिन मुझे पता नहीं है कि पाठ का रंग बदलने के लिए ट्रिच करने के लिए विशेषता क्या है


ठीक है, मैं एट्रिब्यूड एंड्रॉइड के टेक्स्ट टेक्स्ट को बदल सकता हूं: textColorPrimary लेकिन एक्शनबार बटन पर ओवरफ्लो होने पर प्रदर्शित ड्रॉपडाउन मेनू के टेक्स्ट का रंग बदलता है। उन ड्रॉपडाउन मेनू / सूची का रंग बदलने का कोई भी विचार?

Solutions Collecting From Web of "एक्शनबार पाठ रंग"

ठीक है, मैंने एक बेहतर तरीका पाया है अब मैं केवल शीर्षक का रंग बदल सकता हूं। आप उपशीर्षक को भी बदल सकते हैं।

यहाँ मेरी styles.xml है:

<?xml version="1.0" encoding="utf-8"?> <resources> <style name="MyTheme" parent="@android:style/Theme.Holo.Light"> <item name="android:actionBarStyle">@style/MyTheme.ActionBarStyle</item> </style> <style name="MyTheme.ActionBarStyle" parent="@android:style/Widget.Holo.Light.ActionBar"> <item name="android:titleTextStyle">@style/MyTheme.ActionBar.TitleTextStyle</item> </style> <style name="MyTheme.ActionBar.TitleTextStyle" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title"> <item name="android:textColor">@color/red</item> </style> </resources> 

मुझे तुम्हारी जैसी समस्या है, यह एक होलो है। हल्का विषय है लेकिन मैं एक्शनबार रंग शैली चाहता था, इसलिए मुझे पाठ का रंग बदलने की जरूरत है और शीर्षक और मेनू दोनों भी। इसलिए अंत में मैं गिट हब में गया और जब तक मुझे सही शैली नहीं मिल पाती तब तक स्रोत कोड को देखा:

 <?xml version="1.0" encoding="utf-8"?> <!-- For honeycomb and up --> <resources> <style name="myTheme" parent="@android:style/Theme.Holo.Light"> <item name="android:actionBarStyle">@style/myTheme.ActionBar</item> <item name="android:actionMenuTextColor">@color/actionBarText</item> </style> <style name="myTheme.ActionBar" parent="@android:style/Widget.Holo.Light.ActionBar"> <item name="android:background">@drawable/actionbarbground</item> <item name="android:titleTextStyle">@style/myTheme.ActionBar.Text</item> </style> <style name="myTheme.ActionBar.Text" parent="@android:style/TextAppearance"> <item name="android:textColor">@color/actionBarText</item> </style> </resources> 

इसलिए अब आपको जो कुछ भी करना है, उसे @color/actionBarText और @drawable/actionbarbground @color/actionBarText को सेट करना है जो आप चाहते हैं!

मुझे ActionBar ( शर्लक , कॉम्पैट और मूल ) के किसी भी स्वाद के साथ अच्छी तरह से काम करने का एक तरीका मिला:

बस शीर्षक सेट करने के लिए html का उपयोग करें, और टेक्स्ट रंग निर्दिष्ट करें। उदाहरण के लिए, एक्शनबार पाठ रंग को लाल रंग में सेट करने के लिए, बस ऐसा करें:

 getActionBar()/* or getSupportActionBar() */.setTitle(Html.fromHtml("<font color=\"red\">" + getString(R.string.app_name) + "</font>")); 

आप शब्द red बजाय लाल हेक्स कोड #FF0000 उपयोग कर सकते हैं यदि आपको इसके बारे में परेशानी हो रही है, तो देखें कि एंड्रॉइड एचटीएमएल। फ्रॉम एचटीएमएल (स्ट्रिंग) <font color = '#'> टेक्स्ट </ font> के लिए काम नहीं करता है ।


इसके अतिरिक्त, यदि आप रंग संसाधन का उपयोग करना चाहते हैं, तो इस कोड का उपयोग सही हेक्स स्ट्रिंग प्राप्त करने के लिए किया जा सकता है, और यदि आवश्यक हो तो अल्फा को हटा सकता है ( फ़ॉन्ट टैग अल्फा का समर्थन नहीं करता है):

 int orange = getResources().getColor(R.color.orange); String htmlColor = String.format(Locale.US, "#%06X", (0xFFFFFF & Color.argb(0, Color.red(orange), Color.green(orange), Color.blue(orange)))); 

एक्शनबार आईडी सीधे उपलब्ध नहीं है, इसलिए आपको यहां कुछ हैकिंग करना होगा।

 int actionBarTitleId = Resources.getSystem().getIdentifier("action_bar_title", "id", "android"); if (actionBarTitleId > 0) { TextView title = (TextView) findViewById(actionBarTitleId); if (title != null) { title.setTextColor(Color.RED); } } 

मैंने सरल एक लाइन कोड के साथ किया है

 actionBar.setTitle(Html.fromHtml("<font color='#ff0000'>ActionBartitle </font>")); 

इसे क्रिया बार की जड़ में जोड़ें मुझे यह समस्या थी

 <style name="ActionBar" parent="@style/Theme.AppCompat.Light"> <item name="actionBarStyle">@style/Widget.Styled.ActionBar</item> <item name="actionMenuTextColor">@color/stdDarkBlueText</item> </style> <style name="Widget.Styled.ActionBar" parent="@style/Widget.AppCompat.Light.ActionBar"> <item name="titleTextStyle">@style/ActionBarTitleText</item> <item name="subtitleTextStyle">@style/ActionBarSubTitleText</item> </style> <style name="ActionBarTitleText" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"> <item name="android:textColor">@color/stdDarkBlueText</item> <item name="android:textSize">12sp</item> </style> <style name="ActionBarSubTitleText" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Subtitle"> <item name="android:textColor">@color/stdDarkBlueText</item> <item name="android:textSize">12sp</item> </style> 

actionMenuTextColor – एक्शन बार पाठ के लिए पाठ रंग बदलता है, यह कभी भी काम नहीं करता जब यह Widget.Styled.ActionBar का हिस्सा था, इसलिए मुझे इसे रूट में जोड़ना पड़ा। अन्य 2 विशेषताएं एक एक्शन बार के शीर्षक और उपशीर्षक को बदलते हैं।

क्रिया बार पर एक HTML स्ट्रिंग सेट करना SDK v21 + में सामग्री विषय पर काम नहीं करता है

यदि आप इसे बदलना चाहते हैं तो आपको अपनी शैली.एक्सएमएल में प्राथमिक टेक्स्ट रंग सेट करना चाहिए

 <resources> <!-- Base application theme. --> <style name="AppTheme" parent="android:Theme.Material.Light"> <!-- Customize your theme here. --> <item name="android:textColorPrimary">@color/actionbar-text-color</item> </style> </resources> 

यदि आप उपशीर्षक शैली चाहते हैं, तो भी इसे अपने कस्टम शैली में जोड़ें

 <item name="android:subtitleTextStyle">@style/MyTheme.ActionBar.TitleTextStyle</item> 

जो लोग AppCompat पुस्तकालय के लिए एक ही परिणाम प्राप्त करने के लिए देख रहे हैं तो यह मैं क्या इस्तेमाल किया है:

 <?xml version="1.0" encoding="utf-8"?> <resources> <style name="CustomActivityTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar"> <item name="android:actionBarStyle">@style/MyActionBar</item> <item name="actionBarStyle">@style/MyActionBar</item> <!-- other activity and action bar styles here --> </style> <!-- style for the action bar backgrounds --> <style name="MyActionBar" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="android:background">@drawable/actionbar_background</item> <item name="background">@drawable/actionbar_background</item> <item name="android:titleTextStyle">@style/MyTheme.ActionBar.TitleTextStyle</item> <item name="android:subtitleTextStyle">@style/MyTheme.ActionBar.TitleTextStyle</item> <item name="titleTextStyle">@style/MyTheme.ActionBar.TitleTextStyle</item> <item name="subtitleTextStyle">@style/MyTheme.ActionBar.TitleTextStyle</item> </style> <style name="MyTheme.ActionBar.TitleTextStyle" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"> <item name="android:textColor">@color/color_title</item> </style> </resources> 

यह एक पुराना विषय है, लेकिन भविष्य के पाठकों के लिए, टूलबार का उपयोग करके सबकुछ बहुत आसान होता है:

 Toolbar toolbar = (Toolbar) findViewById(R.id.tool_bar); toolbar.setTitle(R.string.app_name); toolbar.setTitleTextColor(getResources().getColor(R.color.someColor)); setSupportActionBar(toolbar); 

यह सभी समाधानों को जांचने के बाद मैं इसका उपयोग किया गया समाधान है

 <!-- Base application theme. --> <style name="AppTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="colorAccent">@color/Button_color</item> <item name="android:editTextStyle">@style/EditTextStyle</item> <item name="android:typeface">monospace</item> <item name="android:windowActionBar">true</item> <item name="colorPrimary">@color/Title_Bar_Color</item> <item name="android:actionBarStyle">@style/Widget.Styled.ActionBar</item> <item name="actionBarStyle">@style/Widget.Styled.ActionBar</item> </style> <style name="EditTextStyle" parent="Widget.AppCompat.EditText"/> <style name="Widget.Styled.ActionBar" parent="@style/Widget.AppCompat.Light.ActionBar"> <item name="titleTextStyle">@style/ActionBarTitleText</item> <item name="android:background">@color/Title_Bar_Color</item> <item name="background">@color/Title_Bar_Color</item> <item name="subtitleTextStyle">@style/ActionBarSubTitleText</item> </style> <style name="ActionBarTitleText" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"> <item name="android:textColor">@color/solid_white</item> <item name="android:textSize">12sp</item> </style> <style name="ActionBarSubTitleText" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Subtitle"> <item name="android:textColor">@color/solid_white</item> <item name="android:textSize">12sp</item> </style> 

आवश्यक रंग बदलें, यह काम करेगा

एपीआई पर अपना खुद का लेआउट बनाने के बिना इसे अच्छी तरह से करने का तरीका मिला = 21

यह केवल एक्शन बार के अंदर ग्रंथों को नियंत्रित करेगा और डिज़ाइन को नियंत्रित करेगा।

आशा है कि यह किसी के लिए उपयोगी होगा

 <!--Material design primary colors--> <style name="AppBaseTheme" parent="Theme.AppCompat.Light"> <item name="colorPrimary">@color/primary</item> <item name="colorPrimaryDark">@color/primary_dark</item> <item name="colorAccent">@color/accent</item> <item name="android:navigationBarColor">@color/primary_dark</item> <item name="actionBarTheme">@style/AppBaseTheme.Toolbar</item> </style> <!--Action bar--> <style name="AppBaseTheme.Toolbar" parent="Widget.AppCompat.ActionBar.Solid"> <item name="android:textColorPrimary">@color/action_bar_text</item> <item name="colorControlNormal">@color/action_bar_text</item> </style> 

शैलियों में यह सबसे सीधे आगे की तरफ है। Xml।

Google के टेम्पलेट styles.xml वर्तमान में निम्न उत्पन्न करता है:

 <style name="AppTheme" parent="Theme.AppCompat.Light"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> </style> 

यदि आप समापन टैग से पहले एक और पंक्ति जोड़ते हैं, जैसा कि दिखाया गया है, तो यह टेक्स्ट रंग को एक डार्क एक्शनबार के साथ होना चाहिए:

 <style name="AppTheme" parent="Theme.AppCompat.Light"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> <item name="actionBarTheme">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item> </style> 

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

 <style name="AppTheme" parent="Theme.AppCompat.Light"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> <item name="actionBarTheme">@style/AppTheme.AppBarOverlay</item> </style> <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar"> <item name="android:textColorPrimary">@android:color/darker_gray</item> </style> 

नोट: यह शीर्षक के रंग और एक्शनबार में प्रदर्शित किसी भी मेनू इवेंट के शीर्षक को बदलता है।

यह फ़ंक्शन अच्छी तरह से काम करता है

 private void setActionbarTextColor(ActionBar actBar, int color) { String title = actBar.getTitle().toString(); Spannable spannablerTitle = new SpannableString(title); spannablerTitle.setSpan(new ForegroundColorSpan(color), 0, spannablerTitle.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); actBar.setTitle(spannablerTitle); } 

तो इसका इस्तेमाल करने के लिए इसे सिर्फ अपने एक्शन बार और नए रंग यानी

 ActionBar actionBar = getActionBar(); // Or getSupportActionBar() if using appCompat int red = Color.RED setActionbarTextColor(actionBar, red); 

एपीआई के कम संस्करण में कई तरीकों की कोशिश करें, एक व्यावहारिक विधि <item name="actionMenuTextColor">@color/your_color</item> और एंड्रॉइड नेमस्पेस का उपयोग न करें, आशा है कि आपकी मदद कर सकते हैं

पुनश्च:

  <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> <item name="actionMenuTextColor">@color/actionMenuTextColor</item> </style> 

इसे अपनी गतिविधि के क्रिएट में जोड़ने का प्रयास करें लगभग हर एंड्रॉइड वर्जन पर काम करता है

  actionBar.setTitle(Html.fromHtml("<font color='#ffff00'>Your Title</font>")); 

या

 getSupportActionBar().setTitle(Html.fromHtml("<font color='#ffff00'>Your Title</font>")); 

एक अच्छा समाधान उपयोगकर्ता के लिए एक स्पैनबलस्ट्रिंगबिल्डर है और इस तरह से रंग सेट करता है। आप स्ट्रिंग के विभिन्न भागों पर भी अलग-अलग रंगों का उपयोग कर सकते हैं, छवियां आदि जोड़ सकते हैं।

नए समर्थन पुस्तकालय के साथ परीक्षण किया गया

एंड्रॉइड देखें : TextView.setText () का उपयोग कर एक स्ट्रिंग का रंग भाग?

यह अनुशंसित समाधान नहीं है क्योंकि मैं यहां एंड्रॉइड एपीआई में जा रहा हूं, लेकिन जैसा कि मेरे ऐप्लिकेशंस को डायनामिक तौर पर एक्सएमएल शर्तों को बदलने की आवश्यकता है, इसलिए मुझे ऐसा करने की आवश्यकता है। लेकिन यह समाधान बहुत अच्छा काम कर रहा है।

उपाय:–

  /** * * @author Kailash Dabhi * @email kailash09dabhi@gmail.com * */ public static void setActionbarTextColor(Activity activity, int color) { Field mActionViewField; try { mActionViewField = activity.getActionBar().getClass() .getDeclaredField("mActionView"); mActionViewField.setAccessible(true); Object mActionViewObj = mActionViewField.get(activity .getActionBar()); Field mTitleViewField = mActionViewObj.getClass().getDeclaredField( "mTitleView"); mTitleViewField.setAccessible(true); Object mTitleViewObj = mTitleViewField.get(mActionViewObj); TextView mActionBarTitle = (TextView) mTitleViewObj; mActionBarTitle.setTextColor(color); // Log.i("field", mActionViewObj.getClass().getName()); } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } } 

एंड्रॉइड 5 (लॉलीपॉप) के लिए आपको एंड्रॉइड का उपयोग करना होगा : एक्शनबारपोपअपथीम ओवरफ्लो मेनू के लिए पाठ सेट करने के लिए थीम