Hola colegas,
Tengo varios días de enredo con esto de los estilos que nunca me han
tratado bien, y acá en la lista no veo que se hable mucho de eso. En
internet es bien escaso el contenido sobre mi problema y no sé ya por
dónde ni cómo buscar, de ahí que acepte cualquier idea, código fuente
con comportamiento similar al que deseo o recomendación de lectura o
ejemplo para resolver el problema.
La cuestión es de índole visual y se puede percibir en la imagen que
adjunto al mensaje. Este comportamiento se produce cuando dejo
presionado de forma prolongada el botón de compartir de la barra de
acciones, y el sistema muestra el título, mensaje de ayuda o tooltip
de este. Lo deseado es que salga ese diálogo de un color completo,
verde oscuro, igual que la barra de acciones, y no con ese borde en
negro como sale ahora.
Esto sucede al personalizar un componente toolbar que he sustituido
por la action bar regular. Como se ve en la imagen, he cambiado el
color de fondo, el del texto, y el del menú flotante que no se
muestran en la imagen pero que sale bien.
El contenido del archivo de estilos ('styles.xml') que está en la
carpeta por defecto 'values' es el siguiente:
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<!-- used for the default action bar background -->
<item name="colorPrimary">@color/primary_color</item>
<!-- used for the status bar -->
<item name="colorPrimaryDark">@color/primary_color_dark</item>
<!-- used as the default value for colorControlActivated which
is used to tint widgets -->
<item name="colorAccent">@color/accent_color</item>
<item name="colorControlNormal">@color/primary_color</item>
<item name="colorControlActivated">@color/accent_color</item>
<item name="colorControlHighlight">@color/accent_color</item>
<!-- toolbar + overflow menu text color -->
<item name="android:textColorPrimary">@color/primary_text_color</item>
<!-- overflow menu button color -->
<item name="android:textColorSecondary">@color/text_icons_color</item>
<item name="android:windowBackground">@color/background_color</item>
<item name="android:textColor">@color/primary_text_color</item>
<item name="android:colorBackground">@color/primary_color</item>
<item name="android:itemTextAppearance">@style/Toolbar.Menu</item>
<item name="popupMenuStyle">@style/Toolbar.Menu</item>
<item name="actionMenuTextColor">@style/Toolbar.Menu</item>
</style>
<style name="Toolbar" parent="ThemeOverlay.AppCompat.ActionBar">
<item name="color">@color/primary_color_dark</item>
<item name="android:colorBackground">@color/primary_color_dark</item>
<!-- color of the Toolbar -->
<item name="android:background">@color/primary_color_dark</item>
<!-- used to for the title of the Toolbar when parent is
Theme.AppCompat.Light -->
<item name="android:textColorPrimaryInverse">@color/highlighted_color</item>
<!-- used to for the title of the Toolbar -->
<item name="android:textColorPrimary">@color/text_icons_color</item>
<!-- used to color the text of the action menu icons -->
<item name="android:textColorSecondary">@color/secondary_text_color</item>
<!-- used to color the overflow menu icon -->
<item name="actionMenuTextColor">@color/light_primary_color</item>
<item name="popupTheme">@style/AppTheme.ActionBar.Popup</item>
</style>
<style name="Toolbar.Menu"
parent="@android:style/TextAppearance.Widget.IconMenu.Item">
<!-- used to color the overflow menu options -->
<item name="android:textColor">@color/text_icons_color</item>
<!-- color of the Toolbar -->
<item name="android:background">@color/primary_color_dark</item>
<!-- used to for the title of the Toolbar -->
<item name="android:textColorPrimary">@color/text_icons_color</item>
<!-- used to color the text of the action menu icons -->
<item name="android:textColorSecondary">@color/secondary_text_color</item>
<item name="android:textColorPrimaryInverse">@color/text_icons_color</item>
</style>
<style name="AppTheme.ActionBar.Popup"
parent="Widget.AppCompat.Light.PopupMenu.Overflow">
<item name="android:background">?attr/colorPrimary</item>
</style>
</resources>
y los colores a los que se refieren ahí están definidos en el archivo
de colores. El componente toolbar tiene definido además el estilo
Toolbar que aparece arriba declarado; tal y como muestro a
continuación:
...
<android.support.v7.widget.Toolbar
app:theme="@style/Toolbar"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize"
/>
...
También he aislado el problema para un proyecto aparte por si alguien
quiere que lo adjunte por acá para jugar y probar un rato. :)
He mirado además en los estilos que aparecen definidos en el appcompat
(sdk\extras\android\support\v7\appcompat\res\values\*.xml), la cual
uso (v7), pero no sé cómo interpretar de aquí lo que necesito, tal vez
alguien me echa un cable ahí :)
En internet lo más cercano que he encontrado es esto:
http://stackoverflow.com/questions/28168093/android-tooltip-menu-item-style
http://stackoverflow.com/questions/26672666/android-actionbar-custom-action-view-tool-tip
pero no me sirve (o al menos eso pienso :D), porque el action que he
incluido ha sido agregado por defecto e menu, y no personalizado como
mencionan en ellos. Además, tampoco he sabido cómo obtener el
onLongClick de ese botón que se agrega a la toolbar (si fuera un
button o imagebutton).
Por último, este problema se manifiesta en todas las versiones desde
la API 10 para arriba en las que he probado.
Disculpen por lo extendido del mensaje, pero me pareció adecuado
brindar la mayor cantidad de información posible para que me puedan
ayudar ;)
Gracias por la lectura anticipada.
--
Saludos,
Gilberto Cuba