Estoy tratando de recrear el aspecto de Theme.AppCompat.Light.DarkActionBar
con la nueva barra de herramientas de la biblioteca de soporte.
Si elijo, Theme.AppCompat.Light
mi barra de herramientas será clara y si elijo Theme.AppCompat
estará oscura. (Técnicamente tienes que usar la .NoActionBar
versión, pero por lo que puedo decir, la única diferencia es
<style name="Theme.AppCompat.NoActionBar">
<item name="windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
</style>
Ahora no hay, Theme.AppCompat.Light.DarkActionBar
pero ingenuamente pensé que sería lo suficientemente bueno hacer el mío
<style name="Theme.AppCompat.Light.DarkActionBar.NoActionBar">
<item name="windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
</style>
Sin embargo, con esto, mis barras de herramientas siguen siendo Light
temáticas. He pasado horas probando diferentes combinaciones de mezclar el tema Oscuro (base) y el tema Claro, pero no puedo encontrar una combinación que me permita tener fondos claros en todo menos en las barras de herramientas.
¿Hay alguna forma de conseguir el AppCompat.Light.DarkActionBar
look con import android.support.v7.widget.Toolbar
?
ThemeOverlay.AppCompat.ActionBar
una barra de herramientas blanca con texto negro, por lo que no parece funcionar tan bien. No parece que al sistema le importe el<item name="android:colorBackground">@color/background_material_dark</item>
inBase.ThemeOverlay.AppCompat.Dark
. Pero seguiré investigando. (Y he leído esa página. Ese fue uno de mis puntos de partida. Todavía no parece funcionar.)android:background="?attr/colorPrimary"
en la barra de herramientas y<item name="colorPrimary">@color/background_material_dark</item>
en mi estilo para que adapte automáticamente el color principal de la aplicación.Editar: después de actualizar a appcompat-v7: 22.1.1 y usar en
AppCompatActivity
lugar deActionBarActivity
my styles.xml se ve así:Nota: Esto significa que estoy usando un
Toolbar
marco proporcionado por el marco (NO incluido en un archivo XML).Esto funcionó para mí:
archivo styles.xml:
Actualización: una cita del blog de Gabriele Mariotti .
fuente
Ok, después de haberme sumergido mucho tiempo en este problema, esta es la forma en que logré obtener la apariencia que esperaba. Lo estoy convirtiendo en una respuesta separada para poder tener todo en un solo lugar.
Es una combinación de factores.
En primer lugar, no intente que las barras de herramientas funcionen bien solo con temas. Parece imposible.
Así que aplique temas explícitamente a sus barras de herramientas como en la respuesta de oRR
layout / toolbar.xml
Sin embargo, esta es la salsa mágica. Para obtener los colores de fondo que esperaba, debe anular el
background
atributo en los temas de la barra Google.valores / estilos.xml:
luego solo incluye el diseño de tu barra de herramientas en tus otros diseños
y listo.
Espero que esto ayude a alguien más para que no tenga que dedicar tanto tiempo a esto como yo.
(si alguien puede descubrir cómo hacer que esto funcione usando solo temas, es decir, sin tener que aplicar los temas explícitamente en los archivos de diseño, con gusto apoyaré su respuesta)
EDITAR:
Entonces, aparentemente, publicar una respuesta más completa fue un imán de votos negativos, así que aceptaré la respuesta incompleta anterior, pero dejaré esta respuesta aquí en caso de que alguien realmente la necesite. Sin embargo, no dudes en seguir votando negativamente si eso te hace feliz.
fuente
<item name="colorPrimary">@color/colorPrimary</item>
Entonces soy libre de usar elandroid:background="?attr/colorPrimary"
atributo en mi widget de la barra Google.@android:color/transparent
, evita el problema cuando mantiene presionado / hace clic en un elemento del menú, hay un cuadro alrededor del texto. Esto también lo prueba en el futuro si el color de fondo claro cambia en el futuro.La forma más limpia que encontré para hacer esto es crear un elemento secundario de ' ThemeOverlay.AppCompat.Dark.ActionBar '. En el ejemplo, configuré el color de fondo de la barra de herramientas en ROJO y el color del texto en AZUL.
Luego puede aplicar su tema a la barra de herramientas:
fuente
Para personalizar el estilo de la barra de herramientas, primero cree el estilo personalizado de la barra de herramientas heredando Widget.AppCompat.Toolbar, anule las propiedades y luego agréguelo al tema de la aplicación personalizada como se muestra a continuación, consulte http://www.zoftino.com/android-toolbar-tutorial para más información barra de herramientas y estilos.
fuente
Puedes probar esto a continuación.
Y los elementos de detalle los puedes encontrar en https://developer.android.com/reference/android/support/v7/appcompat/R.styleable.html#Toolbar
Éstos son algunos más:
TextAppearance.Widget.AppCompat.Toolbar.Title
,TextAppearance.Widget.AppCompat.Toolbar.Subtitle
,Widget.AppCompat.Toolbar.Button.Navigation
.Espero que esto le pueda ayudar.
fuente
Similar al de Arnav Rao, pero con un padre diferente:
Con este enfoque, la apariencia de la barra de herramientas está completamente definida en los estilos de la aplicación, por lo que no necesita colocar ningún estilo en cada barra de herramientas.
fuente
android:toolbarStyle
es API 21+ paraandroid.widget.Toolbar
.toolbarStyle
es AppCompat paraandroid.support.v7.widget.Toolbar
.MyToolbar
el estilo no debe extenderse aWidget.AppCompat.Toolbar
un tema.