Варіант 1) Швидкий і простий спосіб (лише панель інструментів)
Оскільки appcompat-v7-r23 ви можете використовувати такі атрибути безпосередньо у Toolbar
своєму стилі:
app:titleTextColor="@color/primary_text"
app:subtitleTextColor="@color/secondary_text"
Якщо ваш мінімальний SDK становить 23, а ви використовуєте нативний, Toolbar
просто змініть префікс простору імен на android
.
У Java ви можете використовувати наступні методи:
toolbar.setTitleTextColor(Color.WHITE);
toolbar.setSubtitleTextColor(Color.WHITE);
Ці методи приймають кольоровий int, а не ідентифікатор кольорового ресурсу!
Варіант 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>
Довідка! Мій SearchView - безлад!
Примітка. Цей розділ можливо застарілий.
Оскільки ви користуєтесь віджетом пошуку, який з якихось причин використовує іншу стрілку назад (не візуально, технічно), ніж ту, що входить до 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
Бонус: Заміна атрибутів стилю та теми ActionBar
Відповідна стилізація для панелі дій за замовчуванням дії 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>