Intereting Posts
Как захватить и сохранить изображение с помощью пользовательской камеры в Android? Доступ к @android: id / list ListView из кода Предварительный просмотр горизонтальной обработки в андроид-студии Завершить программный вызов Выровнять значки навигации ActionBar над текстом вкладки? Как правильно настроить AdMob с помощью IntelliJ IDEA? JUnit4 – AssertionFailedError: тестов не найдено Как вызвать метод класса, хранящегося под другим пакетом CoordinatorLayout аварийно завершает работу приложения с IndexOutOfBoundsException Android ADB не стал проблемой в eclipse SharedPreferences.onSharedPreferenceChangeListener не называется последовательно Какова наилучшая практика использования хранилищ ключей для подписания версии Android-приложения на Travis CI? Как использовать неосновную деятельность для захвата пользовательского URL в игре единства? Андроидная сетка вид места элементы справа налево Максимальный размер шрифта OpenGL ES 2.0 в Android

Изменение дизайна материала AppCompat ActionBar Color

Я использовал цвет строки состояния AppCompat с помощью actionBarStyle и создавал стиль с фоном, который является цветом, который я хочу.

Теперь, с Material Design AppCompat, этот метод больше не работает.

Вы можете мне помочь? Благодарю.

Solutions Collecting From Web of "Изменение дизайна материала AppCompat ActionBar Color"

Существует новый атрибут colorPrimary который вы можете определить в своей теме. Это даст вам ActionBar или Toolbar сплошной цвет.

Следуя небольшому примеру:

 <style name="AppTheme" parent="Theme.AppCompat.Light"> <!-- colorPrimary is used for the default action bar background --> <item name="colorPrimary">@color/my_action_bar_color</item> </style> 

Обратите внимание: он должен быть только colorPrimary , а не android:colorPrimary , в каждой папке values-v21 кроме values-v21 .

Вы можете узнать больше о настройке цветовой палитры на сайте developer.android.com .

В моем случае у @reVerse был частичный ответ. Мне пришлось внести некоторые дополнительные изменения, чтобы заставить colorPrimary работать, потому что я настраивал другие части панели инструментов … в частности, цвет текста.

Вот мой рабочий файл styles.xml с комментариями, указывающими, что я делал неправильно:

 <!-- As @reVerse mentioned, you need to use colorPrimary instead of android:colorPrimary --> <style name="MyTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="colorPrimary">@color/my_toolbar_color</item> </style> <!-- I was incorrectly using @style/Theme.AppCompat.Light for the popupTheme attribute --> <style name="MyToolbarStyle" parent="Widget.AppCompat.ActionBar"> <item name="theme">@style/MyToolbarTextStyle</item> <item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item> </style> <!-- I was incorrectly using Them.AppCompat.Light for the parent here --> <style name="MyToolbarTextStyle" parent="ThemeOverlay.AppCompat.Dark.ActionBar"> <item name="android:textColorPrimary">@color/my_toolbar_text_color</item> </style> 

Таким образом, при настройке больше, чем на цвет фона панели инструментов, вы должны обязательно использовать одну из тем ThemeOverlay или, по какой-то причине, colorPrimary будет проигнорирован.

Для полноты, вот файл макета, который я использую для своей панели инструментов, Toolbar.xml:

 <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schmeas.android.com/apk/res-auto" style="@style/MyToolbarStyle" android:layout_width="match_parent" android:layout_height="wrap_content" /> 

Надеюсь, это поможет кому-то!

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

См. Также: Создание пользовательского ActionBar

В инструкциях по настройке панели приложений рекомендуется настроить тему в файле манифеста Android следующим образом:

 <application android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> 

Однако, по моему опыту, это colorPrimary стиль colorPrimary настроенный для пользовательского AppTheme. Что для меня работало, так это определение такой темы:

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

А затем использовать эту тему в файле AndroidManifest.

 <application android:theme="@style/AppTheme" /> 

После этого настройка цвета фона панели инструментов в активности на основе colorPrimary работала нормально.

 <android.support.v7.widget.Toolbar android:id="@+id/my_toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" android:elevation="4dp" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> 

(Настройка ThemeOverlay темной темой гарантирует, что текст светится.)