विकल्प 1) त्वरित और आसान तरीका (टूलबार केवल)
Appcompat-v7-r23 के बाद से आप अपनी Toolbar
या अपनी शैली पर सीधे निम्नलिखित विशेषताओं का उपयोग कर सकते हैं :
app:titleTextColor="@color/primary_text"
app:subtitleTextColor="@color/secondary_text"
यदि आपका न्यूनतम एसडीके 23 है और आप मूल का उपयोग करते हैं तो Toolbar
बस नाम स्थान उपसर्ग को बदल दें android
।
जावा में आप निम्न विधियों का उपयोग कर सकते हैं:
toolbar.setTitleTextColor(Color.WHITE);
toolbar.setSubtitleTextColor(Color.WHITE);
ये तरीके एक रंग int नहीं एक रंग संसाधन ID लेते हैं!
विकल्प 2) टूलबार शैली और विषय विशेषताओं को ओवरराइड करें
लेआउट / xxx.xml
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize"
android:theme="@style/ThemeOverlay.MyApp.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
style="@style/Widget.MyApp.Toolbar.Solid"/>
मान / styles.xml
<style name="Widget.MyApp.Toolbar.Solid" parent="Widget.AppCompat.ActionBar">
<item name="android:background">@color/actionbar_color</item>
<item name="android:elevation" tools:ignore="NewApi">4dp</item>
<item name="titleTextAppearance">...</item>
</style>
<style name="ThemeOverlay.MyApp.ActionBar" parent="ThemeOverlay.AppCompat.ActionBar">
<!-- Parent theme sets colorControlNormal to textColorPrimary. -->
<item name="android:textColorPrimary">@color/actionbar_title_text</item>
</style>
मदद! मेरे आइकन भी रंग बदल गए!
@PeterKnut ने बताया कि यह ओवरफ्लो बटन, नेविगेशन ड्रावर बटन और बैक बटन के रंग को प्रभावित करता है। यह पाठ का रंग भी बदलता है SearchView
।
आइकन रंगों के संबंध में: colorControlNormal
इनहेरिट से
android:textColorPrimary
डार्क थीम के लिए (काले रंग पर सफेद)
android:textColorSecondary
हल्के विषयों के लिए (सफेद पर काला)
यदि आप इसे एक्शन बार के थीम पर लागू करते हैं , तो आप आइकन रंग को कस्टमाइज़ कर सकते हैं।
<item name="colorControlNormal">#de000000</item>
Appcompat-v7 में r23 तक एक बग था, जिसके लिए आपको मूल समकक्ष की तरह ओवरराइड करने की भी आवश्यकता थी:
<item name="android:colorControlNormal" tools:ignore="NewApi">?colorControlNormal</item>
मदद! मेरा खोज दृश्य गड़बड़ है!
नोट: यह खंड संभवतः अप्रचलित है।
चूंकि आप खोज विजेट का उपयोग करते हैं, जो किसी कारण से appcompat-v7 के साथ शामिल की तुलना में अलग-अलग बैक एरो (नेत्रहीन, तकनीकी रूप से नहीं) का उपयोग करता है, आपको इसे ऐप के विषय में मैन्युअल रूप से सेट करना होगा । लाइब्रेरी के समर्थन को सही ढंग से रंगा हुआ है। अन्यथा यह हमेशा सफेद होता।
<item name="homeAsUpIndicator">@drawable/abc_ic_ab_back_mtrl_am_alpha</item>
खोज दृश्य पाठ के लिए ... कोई आसान तरीका नहीं है। अपने स्रोत के माध्यम से खुदाई करने के बाद मुझे पाठ देखने के लिए एक रास्ता मिला। मैंने इसका परीक्षण नहीं किया है, तो कृपया मुझे टिप्पणियों में बताएं अगर यह काम नहीं करता है।
SearchView sv = ...; // get your search view instance in onCreateOptionsMenu
// prefix identifier with "android:" if you're using native SearchView
TextView tv = sv.findViewById(getResources().getIdentifier("id/search_src_text", null, null));
tv.setTextColor(Color.GREEN); // and of course specify your own color
बोनस: ओवरराइड एक्शनबार शैली और थीम विशेषताएँ
डिफ़ॉल्ट कार्रवाई के लिए उपयुक्त स्टाइल appcompat-v7 एक्शन बार इस तरह दिखेगा:
<!-- ActionBar vs Toolbar. -->
<style name="Widget.MyApp.ActionBar.Solid" parent="Widget.AppCompat.ActionBar.Solid">
<item name="background">@color/actionbar_color</item> <!-- No prefix. -->
<item name="elevation">4dp</item> <!-- No prefix. -->
<item name="titleTextStyle">...</item> <!-- Style vs appearance. -->
</style>
<style name="Theme.MyApp" parent="Theme.AppCompat">
<item name="actionBarStyle">@style/Widget.MyApp.ActionBar.Solid</item>
<item name="actionBarTheme">@style/ThemeOverlay.MyApp.ActionBar</item>
<item name="actionBarPopupTheme">@style/ThemeOverlay.AppCompat.Light</item>
</style>