Color del texto del botón AlertDialog con la biblioteca de soporte v24.2.1
Estoy teniendo problemas con el AlertDialog. Los botones no utilizan el accentColor para configurar el color del texto del botón.
Estoy utilizando la biblioteca de soporte más reciente, v24.2.1. Estoy diseñando mis diálogos en mi styles.xml de la siguiente manera:
- CoordinatorLayout con RecyclerView y el encabezado Collapsing
- En android cómo configurar la imagen de encabezado de cajón de navegación y el nombre de forma programática en el archivo de clase?
- La barra de estado se vuelve blanca y no muestra contenido detrás de ella
- TabLayout dentro de la barra de herramientas
- Establecimiento de la escucha de compensación en CollapsingToolbarLayout
<style name="Base.Theme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="android:alertDialogTheme">@style/Widget.DialogStyle</item> <item name="alertDialogTheme">@style/Widget.DialogStyle</item> </style>
Y el Widget.DialogStyle se ve así:
<style name="Widget.DialogStyle" parent="@style/Theme.AppCompat.Light.Dialog.Alert"> <item name="android:colorAccent" tools:targetApi="lollipop">@color/primaryColor</item> <item name="colorAccent">@color/primaryColor</item> <item name="android:textColorPrimary">@color/primaryText</item> <item name="android:textColor">@color/primaryText</item> <item name="android:background">@color/backgroundColor</item> <item name="android:textAppearanceLarge">@color/primaryText</item> <item name="android:windowNoTitle">true</item> <item name="android:windowIsFloating">true</item> </style>
En la API de la aplicación inferior a 24 los botones de diálogo están coloreados con el colorAccent, pero en la API 24 este no es más el comportamiento (el texto es negro, debe ser de color naranja). Vea la siguiente captura de pantalla .
¿Hay alguien que sabe cómo recuperar el accentColor en los botones? Gracias.
- ¿Cómo diseñar el NavigationView de la biblioteca de soporte de diseño?
- Establecer el ítem / id de elementos inicialmente seleccionado en BottomNavigationView
- ¿Cómo restablecer la posición de la barra de herramientas controlada por el CoordinatorLayout?
- agrega onClickListener al encabezado de vista de navegación usando la biblioteca de soporte de diseño de android
- Cómo cambiar la posición de etiqueta flotante de TextInputLayout en android
- Android: textAllCaps = "false" no funciona para el diseño de TabLayout
- Tabla de soporte de diseño de Android Contenido solapado de superposición
- Android: ¿Cómo trabajar con CoordinatorLayout y barra de navegación translúcida?
Para algunas implementaciones de AlertDialog
, los botones están contenidos en una ButtonBar y toman su estilo de buttonBarButtonStyle
. Por lo tanto, tiene que anular la configuración que hereda del tema principal ( Theme.AppCompat.Light.Dialog.Alert
).
Agregue el elemento siguiente a Widget.DialogStyle
:
<item name="buttonBarButtonStyle">@style/MyButtonStyle</item>
Y añadir otro estilo llamado MyButtonStyle
como este:
<style name="MyButtonStyle" parent="Widget.AppCompat.Button.Borderless"> <!-- Set background drawable and text size of the buttons here <item name="android:background">@color/my_dialog_dark</item>--> <item name="android:textSize">18sp</item> <!-- this is the button text color! --> <item name="android:textColor">@color/primaryColor</item> </style>
EDITAR
Gracias a kirtan403 por señalar esto: también puede usar otro estilo padre para los botones si Widget.AppCompat.Button.Borderless
no cumple con sus requisitos.
Un ejemplo de nicola.v … @ icapps.com utilizando Widget.AppCompat.Button.ButtonBar.AlertDialog
como estilo padre para los botones se pueden encontrar en el AOSP Issue 220699: colorAccent no se aplica a los botones AlertDialog en Android N.
Asegúrese de que está importando el AlertDialog
correcto:
import android.support.v7.app.AlertDialog
Intente también inflar el diálogo con otro constructor de AlertDialog.Builder
:
android.support.v7.app.AlertDialog.Builder#Builder(android.content.Context, int)
Lo que significa que el segundo parámetro es el estilo del diálogo:
mDialog = new AlertDialog.Builder(context, R.style.Widget.DialogStyle).create();
EDITAR:
Compartir el código, que utilizo para mostrar el cuadro de diálogo de alerta:
public AlertDialog showSimpleDialog(Context context, String title, String message, String btnOk, DialogInterface.OnClickListener handler) { if (mDialog != null && mDialog.isShowing()) { mDialog.dismiss(); mDialog = null; } mDialog = new AlertDialog.Builder(context, R.style.AppTheme_Dialog).create(); mDialog.setTitle(title); mDialog.setMessage(message); mDialog.setButton(DialogInterface.BUTTON_POSITIVE, btnOk, handler); mDialog.setCanceledOnTouchOutside(false); mDialog.show(); return mDialog; }
Y el estilo:
<style name="AppTheme.Dialog" parent="Theme.AppCompat.Light.Dialog.Alert"> <item name="colorAccent">@color/colorPrimary</item> //blue <item name="android:textColorPrimary">@color/primary_text_material_light</item> //black <item name="android:windowMinWidthMajor">97%</item> <item name="android:windowMinWidthMinor">97%</item> </style>
Y los botones son azules. Probado en el emulador API 24.
- Dispositivos Android con Environment.getExternalStorageDirectory ()! = / Mnt / sdcard /?
- HTML.fromHtml Saltos de línea que desaparecen