support studio library last features android android-5.0-lollipop material-design android-support-library appcompat

studio - material design library android



Android v21 Theme.Appcompat color acento se ignora, no hay relleno en los cuadros de diálogo (3)

La versión actual de AppCompat no aplica colorización a AlertDialogs.

Trate de usar https://github.com/afollestad/material-dialogs , ¡funciona genial!

Estoy usando ActionBarActivity del SDK de Android 5 y aquí está mi theme.xml para v21

<style name="AppTheme_Light" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="android:colorPrimary">@color/abc1</item> <item name="android:colorPrimaryDark">@color/abc2</item> <item name="android:colorAccent">@color/abc3</item> </style>

Pero los colores se ignoran y se reemplazan por un color verde azulado predeterminado y todos los cuadros de diálogo aparecen sin relleno.

Problema http://i62.tinypic.com/21cebcz.png

Además, el relleno también se ignora en otros lugares, como las tostadas personalizadas, el problema solo ocurre en los dispositivos de paletas.

Editar:

El problema de relleno se debió a fitsSystemWindow y lo solucioné usando
esta pregunta. .

Pero el problema del color del acento sigue ahí, y no solo afecta a los diálogos, sino a toda la aplicación.


Sobre el color del acento. Está utilizando un tema de AppCompat, por lo que debe eliminar Android del espacio de nombres dentro de su tema.

<style name="AppTheme_Light" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="colorPrimary">@color/abc1</item> <item name="colorPrimaryDark">@color/abc2</item> <item name="colorAccent">@color/abc3</item> </style>

Sobre el diálogo. AppCompat no lo admite (como sé).
Puedes intentar usar este estilo en tu carpeta de valores-v21 :

<style name="Theme" parent="FrameworkRoot.Theme"> <item name="android:alertDialogTheme">@style/Theme.AlertDialog</item> </style> <style name="Theme.AlertDialog" parent="android:Theme.Material.Light.Dialog.Alert"> <item name="android:colorPrimary">@color/demo_primary_color</item> <item name="android:colorPrimaryDark">@color/demo_colorPrimaryDark</item> <item name="android:colorAccent">@color/theme_accent_1</item> </style>

ACTUALIZACIÓN 23/04/2015: BIBLIOTECA DE APOYO V.22.1

La nueva support library v22.1 funciona con el diálogo. Puede usar un android.support.v7.app.AlertDialog o el nuevo AppCompatDialog .

Por ejemplo:

import android.support.v7.app.AlertDialog AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.AppCompatAlertDialogStyle); builder.setTitle("Dialog"); builder.setMessage("Lorem ipsum dolor ...."); builder.setPositiveButton("OK", null); builder.setNegativeButton("Cancel", null); builder.show();

Y usa un estilo como este:

<style name="AppCompatAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert"> <item name="colorAccent">#FFCC00</item> <item name="android:textColorPrimary">#FFFFFF</item> <item name="android:background">#5fa3d0</item> </style>

De lo contrario puedes definir en tu tema actual:

<style name="AppTheme" parent="Theme.AppCompat.Light"> <!-- your style --> <item name="alertDialogTheme">@style/AppCompatAlertDialogStyle</item> </style>

y luego en su código:

import android.support.v7.app.AlertDialog AlertDialog.Builder builder = new AlertDialog.Builder(this);


actualizar

He aplicado con éxito colores para los temas de los diálogos de appCompat, tal vez sea útil para alguien:

valores / estilo.xml

<style name="Theme.MyApp" parent="Theme.AppCompat.Light"> ... /* for android 4 - 4.4, we not define alert dialogs style */ </style>

values-v21 / style.xml

<style name="Theme.MyApp" parent="Theme.AppCompat.Light"> ... /* define alert dialog style for android 5 */ <item name="android:alertDialogTheme">@style/Theme.AlertDialog</item> </style>

<style name="Theme.AlertDialog" parent="Theme.AppCompat.Light.Dialog"> <!--app abar color in Activties Task manager --> <item name="colorPrimary">@color/my_color</item> <!--copy/paste colors --> <item name="colorAccent">@color/my_color</item> <!--status bar color --> <item name="colorPrimaryDark">@color/my_color</item> </style>