Tengo muchos cuadros de diálogo de alerta en mi aplicación. Es un diseño predeterminado, pero estoy agregando botones positivos y negativos al cuadro de diálogo. Entonces, 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);
} }
Crear el 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 Boton negativo es un botón de diálogo predeterminado y toma el color verde predeterminado de Android 5 Lollipop.
Muchas gracias
Respuestas:
Puede intentar crear
AlertDialog
primero el objeto y luego usarlo para configurarlo para cambiar el color del botón y luego mostrarlo. (Tenga en cuenta que en elbuilder
objeto en lugar de llamarshow()
, llamamoscreate()
para obtener elAlertDialog
objeto:La razón por la que debe hacerlo
onShow()
y no puede obtener ese botón después de crear su cuadro de diálogo es que el botón aún no se habría creado.Cambié
AlertDialog.BUTTON_POSITIVE
aAlertDialog.BUTTON_NEGATIVE
para reflejar el cambio en tu pregunta. Aunque es extraño que el botón "Aceptar" sea un botón negativo. Por lo general, es el botón positivo.fuente
Aquí hay una forma natural de hacerlo con estilos:
Si
AppTheme
se hereda deTheme.MaterialComponents
, entonces:Si
AppTheme
se hereda deTheme.AppCompat
:Usa tu
AlertDialogTheme
en tuAppTheme
o en constructor
fuente
com.google.android.material:material:1.0.0-beta01
y estoy usando Theme.MaterialComponents.Light.Dialog.AlertEl color de los botones y otro texto también se puede cambiar a través del tema:
El resultado:
fuente
android:
parte desdeandroid:alertDialogTheme
y haciaandroid:colorAccent
.La solución más simple es:
fuente
AlertDialog.BUTTON_NEGATIVE
etc.Hay dos formas de cambiar el color del botón de diálogo.
Forma básica
Si solo desea cambiar una actividad, escriba las dos líneas siguientes después de
alertDialog.show();
Recomendado
Recomendaré agregar un tema para
AlertDialog
adentrostyles.xml
para que no tenga que escribir el mismo código una y otra vez en cada llamada de actividad / diálogo. Simplemente puede crear un estilo y aplicar ese tema en el cuadro de diálogo. Entonces, cuando desee cambiar el color del cuadro de diálogo AlertDialog, simplemente cambie el color en styles.xml y todos los cuadros de diálogo se actualizarán en toda la aplicación.Y aplica el tema en
AlertDialog.Builder
fuente
Si desea cambiar el color del texto de los botones (positivo, negativo, neutro) simplemente agregue a su estilo de diálogo personalizado:
Entonces, su estilo de diálogo debe verse así:
fuente
El color de los botones y otro texto también se puede cambiar usando appcompat:
fuente
En el tema / estilo de su aplicación, agregue las siguientes líneas:
Luego agregue los siguientes estilos:
El uso de este método hace innecesario configurar el tema en el generador AlertDialog.
fuente
Solo como una nota al margen:
Los colores de los botones (y todo el estilo) también dependen del tema actual, que puede ser bastante diferente cuando usas
o
(Mejor usar el segundo)
fuente
Así es como lo haces: manera simple
fuente
para mí fue diferente, usé un tema de botón
y porqué
estaba blanco allí ... no vi ningún texto de botón (los botones de diálogo son básicamente botones también). ahí vamos, lo cambiamos, lo arreglamos.
fuente