Cómo puedo cambiar el color de texto del botón de diálogo predeterminado en android 5

Tengo muchos cuadros de diálogo de alerta en mi aplicación. Es un diseño por defecto, pero estoy añadiendo botones positivos y negativos al diálogo. Así que los botones obtienen el color de texto predeterminado de Android 5 (verde). Traté de cambiarlo sin éxito. ¿Alguna idea de cómo cambiar ese color de texto?

Mi cuadro de diálogo personalizado:

public class MyCustomDialog extends AlertDialog.Builder { public MyCustomDialog(Context context,String title,String message) { super(context); LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE ); View viewDialog = inflater.inflate(R.layout.dialog_simple, null, false); TextView titleTextView = (TextView)viewDialog.findViewById(R.id.title); titleTextView.setText(title); TextView messageTextView = (TextView)viewDialog.findViewById(R.id.message); messageTextView.setText(message); this.setCancelable(false); this.setView(viewDialog); } } 

Creación del cuadro de diálogo:

 MyCustomDialog builder = new MyCustomDialog(getActivity(), "Try Again", errorMessage); builder.setNegativeButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { ... } }).show(); 

Ese botón negativo es un botón de diálogo predeterminado y toma el color verde predeterminado de Android 5 Lollipop.

Muchas gracias

Cuadro de diálogo personalizado con el botón verde

Puede intentar crear AlertDialog objeto AlertDialog y luego usarlo para configurarlo para cambiar el color del botón y luego mostrarlo (Tenga en cuenta que en el objeto del builder lugar de llamar a show() llamamos create() para obtener el objeto AlertDialog :

 //1. create a dialog object 'dialog' MyCustomDialog builder = new MyCustomDialog(getActivity(), "Try Again", errorMessage); AlertDialog dialog = builder.setNegativeButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { ... } }).create(); //2. now setup to change color of the button dialog.setOnShowListener( new OnShowListener() { @Override public void onShow(DialogInterface arg0) { dialog.getButton(AlertDialog.BUTTON_NEGATIVE).setTextColor(COLOR_I_WANT); } } dialog.show() 

La razón por la que tienes que hacerlo en "onShow ()" y no puede obtener ese botón después de crear el diálogo es que el botón no se han creado todavía.

Cambié AlertDialog.BUTTON_POSITIVE a AlertDialog.BUTTON_NEGATIVE para reflejar el cambio en su pregunta. Aunque es raro que el botón "Aceptar" sería un botón negativo. Normalmente es el botón positivo.

El color de los botones y otro texto también se puede cambiar a través del tema:

Values-21 / styles.xml

 <style name="AppTheme" parent="..."> ... <item name="android:timePickerDialogTheme">@style/AlertDialogCustom</item> <item name="android:datePickerDialogTheme">@style/AlertDialogCustom</item> <item name="android:alertDialogTheme">@style/AlertDialogCustom</item> </style> <style name="AlertDialogCustom" parent="android:Theme.Material.Light.Dialog.Alert"> <item name="android:colorPrimary">#00397F</item> <item name="android:colorAccent">#0AAEEF</item> </style> 

El resultado:

DiálogoSelector de fechas

La solución más sencilla es:

 dialog.show(); //Only after .show() was called dialog.getButton(dialog.BUTTON_NEGATIVE).setTextColor(neededColor); dialog.getButton(dialog.BUTTON_POSITIVE).setTextColor(neededColor); 

Aquí está una manera natural de hacerlo a través de estilos:

 <style name="AlertDialogTheme" parent="Theme.AppCompat.Light.Dialog.Alert"> <item name="buttonBarNegativeButtonStyle">@style/NegativeButtonStyle</item> <item name="buttonBarPositiveButtonStyle">@style/PositiveButtonStyle</item> </style> <style name="NegativeButtonStyle" parent="Widget.AppCompat.Button.ButtonBar.AlertDialog"> <item name="android:textColor">#f00</item> </style> <style name="PositiveButtonStyle" parent="Widget.AppCompat.Button.ButtonBar.AlertDialog"> <item name="android:textColor">#00f</item> </style> 

Establecer AlertDialogTheme través de este atributo en su AppTheme

 <item name="alertDialogTheme">@style/AlertDialogTheme</item> 

O vía constructor en el constructor new AlertDialog.Builder(context, R.style.AlertDialogTheme)

Si desea cambiar el color de texto de los botones (positivo, negativo, neutro), simplemente añada a su estilo de diálogo personalizado:

 <item name="colorAccent">@color/accent_color</item> 

Por lo tanto, su estilo de diálogo debe tener este aspecto:

 <style name="AlertDialog" parent="Theme.AppCompat.Light.Dialog.Alert"> <item name="android:textColor">@android:color/black</item> <item name="colorAccent">@color/topeka_accent</item> </style> 
 <style name="AlertDialogCustom" parent="Theme.AppCompat.Light.Dialog.Alert"> <item name="android:colorPrimary">#00397F</item> <item name="android:textColorPrimary">#22397F</item> <item name="android:colorAccent">#00397F</item> <item name="colorPrimaryDark">#22397F</item> </style> 

El color de los botones y otro texto también se puede cambiar usando appcompat:

Al igual que una nota de lado:

Los colores de los botones (y todo el estilo) también dependen del tema actual que puede ser bastante diferente cuando se utiliza

  android.app.AlertDialog.Builder builder = new AlertDialog.Builder() 

o

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

(Mejor utilizar el segundo)

Para mí era diferente, usé un tema de botón

 <style name="ButtonLight_pink" parent="android:Widget.Button"> <item name="android:background">@drawable/light_pink_btn_default_holo_light</item> <item name="android:minHeight">48dip</item> <item name="android:minWidth">64dip</item> <item name="android:textColor">@color/tab_background_light_pink</item> </style> 

y porqué

Android: textColor

Era blanco allí … no vi cualquier texto del botón (los botones del diálogo son básicamente los botones también). Allí vamos, lo cambiamos, lo arreglamos.

  • Cómo configurar los colores en MPAndroidChart?
  • Android Linkify cómo establecer el color de enlace personalizado?
  • Establecer el color específico de ColorStateList mediante programación
  • Android HoneyComb DatePicker Color del texto
  • Establecer el color de texto de Android TextView de forma programática con setTextColor () procesa android: duplicateParentState inválido
  • Configuración del color del texto del botón con un estilo
  • Cómo cambiar el color de texto de un elemento ListView?
  • Cómo cambiar el color del texto del hilandero
  • TextColor vs TextColorPrimary vs TextColorSecondary
  • Rellene la forma con texto con dos colores diferentes
  • 2 colores diferentes para texto en la misma vista de texto en android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.