Как укладывать AppCompat - v7 панели инструментов, как Theme.AppCompat.Light.DarkActionBar ?

? Liminal @ | Original: StackOverFlow

Я пытаюсь воссоздать внешний вид 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 'S ?



Top 5 Respuesta

1Yong @

Yout можете попробовать это ниже.

AppCompat.Light.DarkActionBar

И элементы детали, которые Вы можете найти их в https://developer.android.com/reference/android/support/v7/appcompat/R.styleable.html#Toolbar

Вот еще несколько : android.support.v7.widget.Toolbar, <style name="MyToolbar" parent="Widget.AppCompat.Toolbar"> <!-- your code here --> </style> , TextAppearance.Widget.AppCompat.Toolbar.Title .

Надеюсь, что это может помочь вам.



2oRRs @

Рекомендуемый способ стиль панели инструментов для TextAppearance.Widget.AppCompat.Toolbar.Subtitle клона будет использовать Widget.AppCompat.Toolbar.Button.Navigation родительским / приложение теме и манипулировать формат панели инструментов .

Toolbar.xml Я включаю в любой деятельности, заключается в следующем:

Light.DarkActionBar

Если вы обратите особое внимание на "приложение : Тема " и "приложение : popupTheme ", вы увидите, как легко адаптировать стиль для ваших конкретных потребностей.

Полезная ссылка для AppCompat v21 в целом : https://chris.banes.me/2014/10/17/appcompat-v21/

3Liminal @

Хорошо после того, как затонул способ много времени в этой проблеме, это, как я сумел получить вид я надеялся . Я делаю ему отдельный ответ, так что я могу получить все в одном месте .

Этосочетание факторов .

Во-первых, не пытайтесь получить панели инструментов, чтобы играть хорошо при помощи всего лишь темы. Казалось бы, невозможно.

Так применять темы явно панелей инструментов, как в http://stackoverflow.com/a/26504082/301341

расположение / toolbar.xml

Theme.AppCompat.Light.NoActionBar

Однако этомагия соус . Для того, чтобы на самом деле получить фоновые цвета, которые я надеялся, у вас есть, чтобы переопределить атрибут <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_height="wrap_content" android:layout_width="match_parent" android:minHeight="?attr/actionBarSize" android:background="@color/background_material_dark" app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/> в панели инструментов тем

значения / styles.xml :

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_alignParentTop="true"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    app:theme="@style/Dark.Overlay"
    app:popupTheme="@style/Dark.Overlay.LightPopup" />

то просто включить свой формат панели инструментов в других ваших макетов

background

и вы хорошо идти.

Надеюсь, что это помогает кто-то еще, так что вам не придется тратить много времени на это, как я.

( если кто может понять, как сделать эту работу, используя только тем, т.е. не применяя темы явно в файлах верстки я с удовольствием поддержать их ответ, а)

EDIT:

Таким образом, очевидно размещения более полный ответ былdownvote магнит, так что я просто принять imcomplete ответ выше, но оставить этот ответ здесь, в случае, если кто на самом деле нуждается в этом. Не стесняйтесь, чтобы downvoting, если он делает вас счастливым, хотя.

4LordRaydenMK @

Это работает для меня : values.xml файла:

<!-- 
    I expected android:colorBackground to be what I was looking for but
    it seems you have to override android:background
-->
<style name="Dark.Overlay" parent="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
    <item name="android:background">?attr/colorPrimary</item>
</style>

<style name="Dark.Overlay.LightPopup" parent="ThemeOverlay.AppCompat.Light">
    <item name="android:background">@color/material_grey_200</item>
</style>

Обновление:цитата из http://gmariotti.blogspot.com/2014/11/android-5-tip-about-toolbar-and-style.html .

С новой панели инструментов вы можете применить стиль и тему .       Они отличаются !       Стиль локальными в представлении панели инструментов, напримерцвет фона .       Приложение : тема, а не глобальными для всех элементов пользовательского интерфейса, завышенным в панели инструментов, напримерцвет заголовка и значки.

5Don @

Чистый способ я нашел, чтобы сделать это создать ребенка " ThemeOverlay.AppCompat.Dark.ActionBar ». В примере я установил цвет фона Панели инструментов на красный и цвет текста в синим.

<include android:id="@+id/mytoolbar" layout="@layout/toolbar.xml" />

Затем можно применить вашу тему в панели инструментов :

<style name="AppBaseTheme" parent="Theme.AppCompat.Light">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="windowActionBar">false</item>
    <item name="theme">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item>
</style>