Я пытаюсь воссоздать внешний вид Theme.AppCompat.Light.DarkActionBar
с помощью новой панели инструментов библиотеки поддержки.
Если я выберу, Theme.AppCompat.Light
моя панель инструментов будет светлой, а если выберу, Theme.AppCompat
то темной. (Технически вы должны использовать .NoActionBar
версию, но, насколько я могу судить, единственная разница в
<style name="Theme.AppCompat.NoActionBar">
<item name="windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
</style>
Теперь нет, Theme.AppCompat.Light.DarkActionBar
но наивно я подумал, что было бы достаточно просто сделать свой собственный
<style name="Theme.AppCompat.Light.DarkActionBar.NoActionBar">
<item name="windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
</style>
Однако при этом мои панели инструментов по-прежнему Light
тематические. Я часами пробовал разные комбинации смешивания темной (базовой) темы и светлой темы, но я просто не могу найти комбинацию, которая позволила бы мне иметь светлый фон для всего, кроме панелей инструментов.
Есть ли способ получить AppCompat.Light.DarkActionBar
внешний вид с помощью импорта android.support.v7.widget.Toolbar
?
ThemeOverlay.AppCompat.ActionBar
я получаю белую панель инструментов с черным текстом, поэтому, похоже, она не работает так хорошо. Не похоже, что система заботится о<item name="android:colorBackground">@color/background_material_dark</item>
inBase.ThemeOverlay.AppCompat.Dark
. Но я буду копать дальше. (И я прочитал эту страницу. Это была одна из моих отправных точек. По-прежнему, похоже, не работает.)android:background="?attr/colorPrimary"
на панели инструментов и<item name="colorPrimary">@color/background_material_dark</item>
в своем стиле, поэтому оно автоматически адаптирует основной цвет приложения.Изменить: после обновления до appcompat-v7: 22.1.1 и использования
AppCompatActivity
вместоActionBarActivity
моего styles.xml выглядит так:Примечание. Это означает, что я использую
Toolbar
предоставленный фреймворком (НЕ включен в файл XML).У меня это сработало:
файл styles.xml:
Обновление: цитата из блога Габриэле Мариотти .
источник
Хорошо, после того, как я потратил много времени на решение этой проблемы, именно так мне удалось добиться того внешнего вида, на который я надеялся. Я делаю отдельный ответ, чтобы собрать все в одном месте.
Это сочетание факторов.
Во-первых, не пытайтесь заставить панели инструментов работать просто с помощью тем. Это кажется невозможным.
Так что применяйте темы явно к своим панелям инструментов, как в ответе oRRs
макет / toolbar.xml
Однако это волшебный соус. Я надеялся, что для того, чтобы получить цвета фона, вам нужно переопределить
background
атрибут в темах панели инструментов.значения / styles.xml:
затем просто включите макет панели инструментов в другие макеты
и тебе хорошо идти.
Надеюсь, это поможет кому-то другому, поэтому вам не придется тратить на это столько времени, как у меня.
(если кто-то может понять, как сделать эту работу, используя только темы, то есть не нужно явно применять темы в файлах макета, я с радостью поддержу их ответ)
РЕДАКТИРОВАТЬ:
Таким образом, очевидно, что публикация более полного ответа была магнитом для отрицательных голосов, поэтому я просто приму неполный ответ выше, но оставлю этот ответ здесь на случай, если он кому-то действительно понадобится. Не стесняйтесь голосовать против, если это вас радует.
источник
<item name="colorPrimary">@color/colorPrimary</item>
Тогда я могу использоватьandroid:background="?attr/colorPrimary"
атрибут в моем виджете панели инструментов.@android:color/transparent
вы избегаете проблемы, когда вы долгое время нажимаете / нажимаете на пункт меню, вокруг текста есть рамка. Это также доказывает, что в будущем цвет фона изменится.Самый простой способ, который я нашел для этого, - создать дочерний элемент ThemeOverlay.AppCompat.Dark.ActionBar . В этом примере я установил цвет фона панели инструментов на КРАСНЫЙ цвет, а цвет текста на СИНИЙ.
Затем вы можете применить свою тему к панели инструментов:
источник
Чтобы настроить стиль панели инструментов, сначала создайте собственный стиль панели инструментов, наследующий Widget.AppCompat.Toolbar, переопределите свойства и затем добавьте его в настраиваемую тему приложения, как показано ниже, см. Http://www.zoftino.com/android-toolbar-tutorial для панель инструментов дополнительной информации и стили.
источник
Вы можете попробовать это ниже.
А подробные элементы вы можете найти в https://developer.android.com/reference/android/support/v7/appcompat/R.styleable.html#Toolbar.
Вот еще немного:
TextAppearance.Widget.AppCompat.Toolbar.Title
,TextAppearance.Widget.AppCompat.Toolbar.Subtitle
,Widget.AppCompat.Toolbar.Button.Navigation
.Надеюсь, это поможет тебе.
источник
Подобно Арнаву Рао, но с другим родителем:
При таком подходе внешний вид панели инструментов полностью определяется стилями приложения, поэтому вам не нужно размещать какие-либо стили на каждой панели инструментов.
источник
android:toolbarStyle
API 21+ дляandroid.widget.Toolbar
.toolbarStyle
это AppCompat дляandroid.support.v7.widget.Toolbar
.MyToolbar
стиль должен расширятьWidget.AppCompat.Toolbar
не тему.