Estou tentando recriar a aparência Theme.AppCompat.Light.DarkActionBar
com a nova barra de ferramentas da biblioteca de suporte.
Se eu escolher Theme.AppCompat.Light
minha barra de ferramentas ficará clara e se eu escolher, Theme.AppCompat
ela ficará escura. (Tecnicamente, você tem que usar a .NoActionBar
versão, mas tanto quanto posso dizer a única diferença é
<style name="Theme.AppCompat.NoActionBar">
<item name="windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
</style>
Agora não há, Theme.AppCompat.Light.DarkActionBar
mas ingenuamente pensei que seria bom o suficiente apenas para fazer o meu
<style name="Theme.AppCompat.Light.DarkActionBar.NoActionBar">
<item name="windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
</style>
No entanto, com isso, minhas barras de ferramentas ainda são Light
temáticas. Passei horas tentando diferentes combinações de mixagem do tema Escuro (base) e do tema Claro, mas simplesmente não consigo encontrar uma combinação que me permita ter fundos claros em tudo, exceto nas barras de ferramentas.
Existe uma maneira de obter a AppCompat.Light.DarkActionBar
aparência com importação android.support.v7.widget.Toolbar
?
ThemeOverlay.AppCompat.ActionBar
obtenho uma barra de ferramentas branca com texto preto, então não parece funcionar muito bem. Não parece que os cuidados do sistema sobre o<item name="android:colorBackground">@color/background_material_dark</item>
noBase.ThemeOverlay.AppCompat.Dark
. Mas vou continuar cavando. (E eu li essa página. Esse foi um dos meus pontos de partida. Ainda não parece funcionar.)android:background="?attr/colorPrimary"
na barra de ferramentas e<item name="colorPrimary">@color/background_material_dark</item>
no meu estilo para que ele se adapte automaticamente à cor principal do aplicativo.Editar: depois de atualizar para appcompat-v7: 22.1.1 e usar em
AppCompatActivity
vez deActionBarActivity
my styles.xml fica assim:Nota: Isso significa que estou usando um
Toolbar
fornecido pela estrutura (NÃO incluído em um arquivo XML).Isso funcionou para mim:
arquivo styles.xml:
Atualização: Citação do blog de Gabriele Mariotti .
fonte
Ok, depois de ter mergulhado muito tempo nesse problema, esta é a maneira que consegui obter a aparência que estava esperando. Estou criando uma resposta separada para que possa colocar tudo em um só lugar.
É uma combinação de fatores.
Em primeiro lugar, não tente fazer com que as barras de ferramentas funcionem bem apenas por meio de temas. Parece impossível.
Portanto, aplique os temas explicitamente às suas barras de ferramentas, como na resposta oRRs
layout / toolbar.xml
No entanto, este é o molho mágico. Para realmente obter as cores de fundo que esperava, você deve substituir o
background
atributo nos temas da barra de ferramentasvalores / estilos.xml:
em seguida, basta incluir o layout da barra de ferramentas em seus outros layouts
e você está pronto para ir.
Espero que isso ajude alguém, para que você não tenha que gastar tanto tempo com isso quanto eu.
(se alguém puder descobrir como fazer isso funcionar usando apenas temas, ou seja, não ter que aplicar os temas explicitamente nos arquivos de layout, ficarei feliz em apoiar sua resposta)
EDITAR:
Então, aparentemente, postar uma resposta mais completa foi um ímã de votos negativos, então aceitarei a resposta incompleta acima, mas deixarei esta resposta aqui, caso alguém realmente precise. Sinta-se à vontade para continuar votando negativamente se isso te deixar feliz.
fonte
<item name="colorPrimary">@color/colorPrimary</item>
Then I'm free to useandroid:background="?attr/colorPrimary"
attribute no widget da barra de ferramentas.@android:color/transparent
o, evita o problema ao pressionar / clicar longamente em um item de menu, há uma caixa ao redor do texto. Isso também faz uma prova futura se a cor de fundo clara mudar no futuro.A maneira mais limpa que descobri de fazer isso é criar um filho de ' ThemeOverlay.AppCompat.Dark.ActionBar '. No exemplo, eu defini a cor de fundo da barra de ferramentas como VERMELHO e a cor do texto como AZUL.
Você pode então aplicar seu tema à barra de ferramentas:
fonte
Para personalizar o estilo da barra de ferramentas, primeiro crie o estilo personalizado da barra de ferramentas herdando Widget.AppCompat.Toolbar, substitua as propriedades e, em seguida, adicione-o ao tema do aplicativo personalizado conforme mostrado abaixo, consulte http://www.zoftino.com/android-toolbar-tutorial para mais informações sobre a barra de ferramentas e estilos.
fonte
Você pode tentar isso abaixo.
E os elementos de detalhe você pode encontrá-los em https://developer.android.com/reference/android/support/v7/appcompat/R.styleable.html#Toolbar
Aqui estão mais algumas:
TextAppearance.Widget.AppCompat.Toolbar.Title
,TextAppearance.Widget.AppCompat.Toolbar.Subtitle
,Widget.AppCompat.Toolbar.Button.Navigation
.Espero que isso possa ajudá-lo.
fonte
Semelhante ao de Arnav Rao, mas com um pai diferente:
Com essa abordagem, a aparência da barra de ferramentas é totalmente definida nos estilos do aplicativo, portanto, você não precisa colocar nenhum estilo em cada barra de ferramentas.
fonte
android:toolbarStyle
é API 21+ paraandroid.widget.Toolbar
.toolbarStyle
é para AppCompatandroid.support.v7.widget.Toolbar
.MyToolbar
o estiloWidget.AppCompat.Toolbar
não deve estender um tema.