Вариант 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>
ThemeOverlay
и использовали его как тему , то фон каждого дочернего элемента также стал бы цветным.Вот мое решение, если вам нужно изменить только цвет заголовка, а не цвет текста в виджете поиска.
макет / toolbar.xml
Значения / themes.xml
Аналогичным образом вы можете установить также subtitleTextAppearance.
источник
Если вы поддерживаете API 23 и выше, теперь вы можете использовать атрибут titleTextColor. для установки цвета заголовка панели инструментов.
макет / toolbar.xml
MyActivity.java
источник
Настройка у
app:titleTextColor
меняandroid.support.v7.widget.Toolbar
работает на Android 4.4 и 6.0 тоже сcom.android.support:appcompat-v7:23.1.0
:источник
Это меня некоторое время раздражало, и мне не нравился ни один из полученных ответов, поэтому я взглянул на источник, чтобы увидеть, как это работает.
FractalWrench находится на правильном пути, но его можно использовать ниже API 23, и его необязательно устанавливать на панели инструментов.
Как говорили другие, вы можете установить стиль на панели инструментов с помощью
и в этом стиле вы можете установить цвет текста заголовка с помощью
для pre API 23 или для 23+
Полный xml
Вот все атрибуты, которые можно установить для панели инструментов
источник
Самый простой способ изменить
Toolbar
цвет заголовка с помощью inCollapsingToolbarLayout
.Добавьте стили ниже в
CollapsingToolbarLayout
styles.xml
источник
Если вы можете использовать appcompat-v7 app: titleTextColor = "# fff">
источник
Это сработало для меня
источник
Создайте панель инструментов в своем xml ... toolbar.xml:
Затем добавьте в свой toolbar.xml следующее:
Remeber @ color / colorText - это просто ваш файл color.xml с атрибутом цвета с именем colorText и вашим цветом. Это лучший способ вызвать ваши строки, а не жестко кодировать свой цвет внутри вашего toolbar.xml. У вас также есть другие возможности для изменения текста, такие как: textAppearance ... и т. Д. Просто введите app: text ... и intelisense предоставит вам варианты в студии Android.
ваша последняя панель инструментов должна выглядеть так:
NB: эта панель инструментов должна находиться внутри вашего activity_main.xml.Easy Peasie
Другой вариант - сделать все это в своем классе:
Удачи
источник
Для изменения цвета
/>
источник
Я боролся с этим в течение нескольких часов сегодня, потому что все эти ответы теперь как бы устарели, что с MDC и новыми возможностями тематики я просто не мог видеть, как переопределить
app:titleTextColor
приложение как стиль.Ответ
titleTextColor
заключается в том, что файл styles.xml доступен в том случае, если вы переопределяете то, что унаследовано отWidget.AppCompat.Toolbar
. Сегодня я думаю, что лучшим выбором будетWidget.MaterialComponents.Toolbar
:И в своей теме приложения укажите toolbarStyle:
Теперь вы можете оставить xml, в котором вы указываете панель инструментов, без изменений. Долгое время я думал, что изменение
android:textColor
внешнего вида текста заголовка панели инструментов должно работать, но по какой-то причине это не так.источник
источник
}
Или простое использование из MainActivity:
style.xml
источник
Сделай это с
toolbar.setTitleTextAppearance(context, R.style.TitleTextStyle);
// это стиль, в котором вы можете настроить свою цветовую схему
источник
Очень просто, у меня это сработало (заголовок и значок белые):
источник
С помощью библиотеки компонентов материала вы можете использовать
app:titleTextColor
атрибут.В макете можно использовать что-то вроде:
Вы также можете использовать собственный стиль :
с (расширяя
Widget.MaterialComponents.Toolbar.Primary
стиль):или (расширение
Widget.MaterialComponents.Toolbar
стиля):Вы также можете переопределить цвет, определенный стилем, используя
android:theme
атрибут (используяWidget.MaterialComponents.Toolbar.Primary
стиль):с участием:
или (используя
Widget.MaterialComponents.Toolbar
стиль):с участием:
источник