Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


¿Cómo se estila la barra de herramientas appcompat-v7 como Theme.AppCompat.Light.DarkActionBar?

Estoy tratando de recrear la apariencia 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á ligera y si elijo Theme.AppCompat será oscuro. (Técnicamente usted tiene que usar la versión .NoActionBar pero hasta donde 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 para hacer mi propia

 <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 son todavía tema de Light . He pasado horas intentando diferentes combinaciones de mezclar el tema de Dark (base) y el tema de Light, pero no puedo encontrar una combinación que me permita tener fondos claros en todo, excepto en las barras de herramientas.

¿Hay una manera de conseguir el aspecto de AppCompat.Light.DarkActionBar con la importación de android.support.v7.widget.Toolbar ?

  • NullPointerException en SearchView con AppCompat en Android 5.0
  • Appcompat_v7: Error al recuperar el padre del elemento: No se encontró ningún recurso que coincida con el nombre dado
  • Mostrar icono en barra de herramientas / barra de herramientas con AppCompat-v7 21
  • Cómo implementar DrawerArrowToggle de Android appcompat v7 21 library
  • Android Studio - Valores de error de compilación de Appcompat-v23 / styles_bases.xml
  • ¿Cuál es el uso de un ... -v21.xml?
  • Error: no se pudo encontrar el destino con la cadena de hash 'android-21'
  • Cómo personalizar el campo EditText en android utilizando AppCompat v7: 21
  • 5 Solutions collect form web for “¿Cómo se estila la barra de herramientas appcompat-v7 como Theme.AppCompat.Light.DarkActionBar?”

    La forma recomendada de estilo de la barra de herramientas para un clon Light.DarkActionBar sería utilizar Theme.AppCompat.Light.DarkActionbar como tema de padre / aplicación y agregar los siguientes atributos al estilo para ocultar el ActionBar predeterminado:

     <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="windowActionBar">false</item> <item name="windowNoTitle">true</item> </style> 

    A continuación, utilice lo siguiente como su barra de herramientas:

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

    Para otras modificaciones, AppBarLayout->android:theme estilos que extenderían ThemeOverlay.AppCompat.Dark.ActionBar y ThemeOverlay.AppCompat.Light reemplazando los de AppBarLayout->android:theme y Toolbar->app:popupTheme . También tenga en cuenta que esto recogerá su ?attr/colorPrimary si lo ha establecido en su estilo principal para que pueda obtener un color de fondo diferente.

    Encontrará un buen ejemplo de esto en la plantilla de proyecto actual con una Empty Activity de Android Studio (1.4 o superior).

    Edit: Después de actualizar a appcompat-v7: 22.1.1 y usar AppCompatActivity lugar de ActionBarActivity mi styles.xml se parece a:

     <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="theme">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item> </style> 

    Nota: Esto significa que estoy usando una Toolbar proporcionada por el framework (NO incluido en un archivo XML).

    Esto funcionó para mí:
    Archivo styles.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> 

    Actualización: una cita del blog de Gabriele Mariotti .

    Con la nueva barra de herramientas puedes aplicar un estilo y un tema. ¡Ellos son diferentes! El estilo es local para la vista de la barra de herramientas, por ejemplo el color de fondo. El tema app: theme es global a todos los elementos ui inflados en la barra de herramientas, por ejemplo, el color del título y los iconos.

    Ok después de haber hundido camino a mucho tiempo en este problema esta es la forma en que logré obtener la apariencia que estaba esperando. Estoy haciendo una respuesta por separado para que pueda conseguir todo en un solo lugar.

    Es una combinación de factores.

    En primer lugar, no trate de obtener las barras de herramientas para jugar bien a través de sólo temas. Parece imposible.

    Así que aplicar temas explícitamente a sus barras de herramientas como en oRRs responder

    Layout / toolbar.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" /> 

    Sin embargo, esta es la salsa mágica. Con el fin de obtener realmente los colores de fondo que estaba esperando para que tenga que anular el atributo de background en los temas de su barra de herramientas

    Values ​​/ styles.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> 

    Entonces solo incluya el diseño de la barra de herramientas en sus otros diseños

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

    Y eres bueno para ir.

    Espero que esto ayude a otra persona para que no tenga que pasar tanto tiempo en esto como yo.

    (Si alguien puede averiguar cómo realizar este trabajo utilizando sólo temas, es decir, no tener que aplicar los temas explícitamente en los archivos de diseño con mucho gusto apoyar su respuesta en su lugar)

    EDITAR:

    Así que aparentemente publicar una respuesta más completa fue un imán downvote, así que voy a aceptar la respuesta incompleta anterior pero dejar esta respuesta aquí en caso de que alguien realmente la necesita. Siéntase libre de mantener downvoting si te hace feliz aunque.

    La forma más limpia que encontré para hacer esto es crear un hijo de ' ThemeOverlay.AppCompat.Dark.ActionBar '. En el ejemplo, establezco el color de fondo de la Barra de herramientas en ROJO y el color del texto en AZUL.

     <style name="MyToolbar" parent="ThemeOverlay.AppCompat.Dark.ActionBar"> <item name="android:background">#FF0000</item> <item name="android:textColorPrimary">#0000FF</item> </style> 

    A continuación, puede aplicar el tema a la barra de herramientas:

     <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" app:theme="@style/MyToolbar" android:minHeight="?attr/actionBarSize"/> 

    Yout puede intentar esto abajo.

     <style name="MyToolbar" parent="Widget.AppCompat.Toolbar"> <!-- your code here --> </style> 

    Y los elementos de detalle que puede 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.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.