studio setsupportactionbar personalizar icon example elementos bar agregar android styles themes appcompat android-toolbar

setsupportactionbar - toolbar android material design



AppCompat ToolBar popupTheme no se utiliza en el elemento de menĂº ShareAction (3)

Entonces, esto es lo que funcionó para mí. Aquí está mi barra de herramientas 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/action_bar_main" android:layout_height="wrap_content" android:layout_width="fill_parent" app:theme="@style/Toolbar" app:popupTheme="@style/Toolbar_Popup" android:minHeight="?attr/actionBarSize" android:background="?attr/colorPrimary" />

Observe que configuré el tema y el tema emergente, y también anulo el fondo para que sea colorPrimary. Aquí está la descripción principal del tema de la aplicación con temas para la barra de herramientas:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="android:actionMenuTextColor">@color/white</item> <!-- Support library compatibility --> <item name="actionMenuTextColor">@color/white</item> <item name="actionBarSize">@dimen/actionbar_height</item> <item name="colorPrimary">@color/dark_blue</item> <item name="colorPrimaryDark">@color/dark_blue</item> <item name="android:textColorPrimary">#607d8b</item> </style> <style name="Toolbar" parent="Base.ThemeOverlay.AppCompat.ActionBar"> <item name="android:textColorPrimary">#fff</item> <item name="android:background">@color/dark_blue</item> </style> <style name="Toolbar_Popup" parent="Base.ThemeOverlay.AppCompat.ActionBar"> <item name="android:textColorPrimary">#fff</item> <item name="android:background">@color/dark_blue</item> </style>

Entonces, como resultado, el fondo de acción Compartir se establece en el valor de fondo en el tema principal de la barra de herramientas. Y el fondo de la barra de herramientas en sí está anulado.

Contexto

Usando el AppCompat v7 21.0.0 / 21.0.2 / 21.0.3

Problema

El popupTheme de la barra de herramientas no se aplica a ShareAction

Estilo en la barra de herramientas:

<style name="MyActionBarStyle" 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>

El elemento de menú de desbordamiento está utilizando el popupTheme correctamente

El ShareAction por otro lado no recibe el popupTheme. Después de algunas pruebas, noté que recibió la aplicación: el tema de la barra de herramientas era oscuro.

<item name="android:colorBackground">@color/white</item>

Para obtener el texto negro en ShareAction, intenté establecer muchos atributos y al configurar "android: textColorPrimary" (en el tema de la barra de herramientas) Obtengo lo que quiero PERO, luego mis iconos en la barra de herramientas también toman este color, que es extraño. .

El menú xml es el siguiente:

<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:cycle="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/ic_share" android:icon="@drawable/abc_ic_menu_share_holo_dark" android:title="@string/media_share" cycle:showAsAction="ifRoom" cycle:actionProviderClass="android.support.v7.widget.ShareActionProvider" /> <item android:icon="@drawable/abc_ic_menu_share_holo_dark" android:showAsAction="ifRoom" android:title="br"> <menu> <item android:id="@+id/menuSortNewest" android:title="Sort by newest" /> <item android:id="@+id/menuSortRating" android:title="Sort by rating" /> </menu> </item> </menu>

Espero que tanto ShareAction como el desbordamiento tengan el popupTheme pero no es el caso

Solución

Voy a editar este post una vez que tengo una solución

Ref: https://code.google.com/p/android/issues/detail?id=87285&thanks=87285&ts=1419254842



Me estaba rascando la cabeza durante años tratando de resolver esto. Encontré una solución a mi problema. Hopefuully esto ayudará a otros también:

En la definición de mi barra de herramientas, estaba configurando un tema personalizado así:

<android.support.v7.widget.Toolbar ... app:theme="@style/ActionBarThemeOverlay" ... />

En mi styles.xml, mi tema fue definido como:

<style name="ActionBarThemeOverlay" parent="ThemeOverlay.AppCompat.Light"> <item name="android:textColorPrimary">#fff</item> <item name="colorControlNormal">#fff</item> <item name="colorControlHighlight">#3fff</item> </style>

Quería iconos de acción blancos en mi barra de herramientas, así que estaba configurando estos valores en blanco. Desafortunadamente, también estaba haciendo que el texto del menú ShareActionProvider sea blanco (sobre un fondo blanco).

La solución para mí fue eliminar la configuración de estilo para textColorPrimary . Los iconos de la barra de herramientas aún estaban en blanco, pero ahora tenía el texto oscuro deseado en el menú del proveedor emergente.

<style name="ActionBarThemeOverlay" parent="ThemeOverlay.AppCompat.Light"> <item name="colorControlNormal">#fff</item> <item name="colorControlHighlight">#3fff</item> </style>