with unknown try tip the studio solucion problem failed error alpha3 actionbar android appcompat android-toolbar

android - try - failed to load appcompat actionbar with unknown error. solucion



Fondo de estilo de AppCompat propagado a la imagen dentro de la barra de herramientas (2)

No deberías usar un theme así:

  • style = local to the Toolbar
  • tema = global a todo lo inflado en la barra de herramientas

La solución 2, como la llaman, es la forma correcta. Si desea extraer algunos valores en un estilo, puede hacerlo así:

<android.support.v7.widget.Toolbar android:id="@+id/my_awesome_toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" style="@style/MyDarkToolbar" />

Estilo:

<style name="MyDarkToolbarStyle" parent="Widget.AppCompat.Toolbar"> <item name="android:background">@color/green</item> <item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item> <item name="theme">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item> </style>

Contexto

Estoy usando la última versión de AppCompat v7 lib (21.0.0) y he migrado mi aplicación de ActionBar a ToolBar

Problema

  1. Las imágenes en la barra de herramientas reciben automáticamente el mismo fondo que la barra de herramientas.

Actualmente, el SearchBox es un conjunto de vistas personalizado en la barra de acción (de la implementación anterior) planeo cambiar a SearchView y diseñarlo en consecuencia, pero todavía estoy muy interesado en el problema al que me enfrento ahora.

  1. Cuando se presiona prolongadamente un elemento del menú en la barra de herramientas, aparece una tostada con el texto de sugerencia y el texto tiene el mismo fondo que la barra de herramientas.

¿Cómo puedo evitar esto?

Aquí está mi diseño de barra de herramientas y el estilo y tema

layout v_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:id="@+id/my_awesome_toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" app:theme="@style/MyActionBarStyle"/>

valores / estilos.xml

<style name="MyActionBarStyle" parent="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <item name="android:background">@color/green</item> <item name="android:windowActionBarOverlay">true</item> <!-- Support library compatibility --> <item name="background">@color/green</item> <item name="windowActionBarOverlay">true</item> </style>

Tema

<style name="MyTheme" parent="AppBaseTheme"> <!-- Here we setting appcompat’s actionBarStyle --> <!-- <item name="actionBarStyle">@style/MyActionBarStyle</item> --> <item name="windowActionBar">false</item> <!-- ...and here we setting appcompat’s color theming attrs --> <item name="colorPrimary">@color/green</item> <item name="colorPrimaryDark">@color/green_dark</item> </style>

Solución 1 para el problema 1

La solución para el primer problema es establecer un fondo transparente en el ImageView

android:background="@color/transparent"

Esto no resuelve el problema de las tostadas.

Solución para ambos problemas.

Puse un fondo a la barra de herramientas

<?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:id="@+id/my_awesome_toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/green" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" app:theme="@style/MyActionBarStyle"/>

Y ya no estoy estableciendo el fondo sobre el tema.

<style name="MyActionBarStyle" parent="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <item name="android:windowActionBarOverlay">true</item> <!-- Support library compatibility --> <item name="windowActionBarOverlay">true</item> </style>

Como señaló Chris Banes, se podría crear un estilo para la barra de herramientas en lugar de declarar el android: fondo.

Esto soluciona mi problema, pero luego parece que tengo otro problema con el hecho de que el popupTheme no se aplica y mi menú desplegable ShareActionMenuItem no tiene un fondo blanco con texto negro. Vea otra pregunta aquí: AppCompat ToolBar popupTheme no se utiliza en el elemento de menú ShareAction

Tal vez esto es un error en la biblioteca de appcompat.


Nunca uses temas para editar. Porque el tema define el comportamiento general de la aplicación. U puede usar dos métodos para eso

Método 1

U puede especificar directamente los parámetros en appbar.xml como se muestra a continuación

en appbar.xml

<?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.Toolbar android:id="@+id/my_awesome_toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="@color/green" app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:popupTheme=">style/ThemeOverlay.AppCompat.Light"/>

Método: 2

Puedes usar un estilo como Chris_Banes sugirió en la publicación anterior

en appbar.xml:

<android.support.v7.widget.Toolbar android:id="@+id/my_awesome_toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" style="@style/MyDarkToolbar" />

en estilo:

<style name="MyDarkToolbarStyle" parent="Widget.AppCompat.Toolbar"> <item name="android:background">@color/green</item> <item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item> <item name="theme">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item> </style>

Puntos a tener en cuenta

Con la nueva barra de herramientas puedes aplicar un estilo y un tema. ¡Ellos son diferentes! El estilo es local a la vista de la barra de herramientas, por ejemplo, el color de fondo. En su lugar, la aplicación: tema es global para todos los elementos de la interfaz de usuario inflados en la barra de herramientas, por ejemplo, el color del título y los iconos.