Al fin luego de mucho luchar pudimos dar con el arreglo de este atascamiento que tantos lectores de nuestro sitio web tienen. Si deseas compartir algún detalle no dejes de aportar tu información.
Solución:
Solo para cambiar el color de la fuente, intente esto:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(Html.fromHtml("This is a test"));
builder.setPositiveButton(Html.fromHtml("Yes"), new DialogInterface.OnClickListener()
public void onClick(DialogInterface dialog, int arg1)
Log.e(LOG_TAG, "Yes");
);
builder.setNegativeButton(Html.fromHtml("No"), new DialogInterface.OnClickListener()
public void onClick(DialogInterface dialog, int arg1)
Log.e(LOG_TAG, "No");
);
builder.create();
builder.show();
resultado:
Para cambiar el color de la fuente y el color de fondo del botón, intente esto:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(Html.fromHtml("This is a test"));
builder.setCancelable(false);
builder.setNegativeButton("No", new DialogInterface.OnClickListener()
public void onClick(DialogInterface dialog, int which)
);
builder.setPositiveButton("Yes", new DialogInterface.OnClickListener()
public void onClick(DialogInterface dialog, int which)
);
AlertDialog alert = builder.create();
alert.show();
Button nbutton = alert.getButton(DialogInterface.BUTTON_NEGATIVE);
//Set negative button background
nbutton.setBackgroundColor(Color.MAGENTA);
//Set negative button text color
nbutton.setTextColor(Color.YELLOW);
Button pbutton = alert.getButton(DialogInterface.BUTTON_POSITIVE);
//Set positive button background
pbutton.setBackgroundColor(Color.YELLOW);
//Set positive button text color
pbutton.setTextColor(Color.MAGENTA);
Resultado:
Si desea cambiar el color del divisor, intente esto:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Test Title");
builder.setMessage(Html.fromHtml("This is a test"));
builder.setCancelable(false);
builder.setNegativeButton("No", new DialogInterface.OnClickListener()
public void onClick(DialogInterface dialog, int which)
);
builder.setPositiveButton("Yes", new DialogInterface.OnClickListener()
public void onClick(DialogInterface dialog, int which)
);
AlertDialog dialog = builder.create();
dialog.show();
try
Resources resources = dialog.getContext().getResources();
int alertTitleId = resources.getIdentifier("alertTitle", "id", "android");
TextView alertTitle = (TextView) dialog.getWindow().getDecorView().findViewById(alertTitleId);
alertTitle.setTextColor(Color.MAGENTA); // change title text color
int titleDividerId = resources.getIdentifier("titleDivider", "id", "android");
View titleDivider = dialog.getWindow().getDecorView().findViewById(titleDividerId);
titleDivider.setBackgroundColor(Color.YELLOW); // change divider color
catch (Exception ex)
ex.printStackTrace();
Button nbutton = dialog.getButton(DialogInterface.BUTTON_NEGATIVE);
//Set negative button background
nbutton.setBackgroundColor(Color.MAGENTA);
//Set negative button text color
nbutton.setTextColor(Color.YELLOW);
Button pbutton = dialog.getButton(DialogInterface.BUTTON_POSITIVE);
//Set positive button background
pbutton.setBackgroundColor(Color.YELLOW);
//Set positive button text color
pbutton.setTextColor(Color.MAGENTA);
Este es mi código de muestra, pero si desea cambiar el color del divisor, considere que la parte del código comienza con “int titleDividerId”.
Resultado:
Si desea personalizar mucho el AlertDialog. Por ejemplo, al agregar algunas casillas de verificación con un color de fondo personalizado, use este enfoque:
AlertDialog.Builder alert = new AlertDialog.Builder(this);
LinearLayout mainLayout = new LinearLayout(this);
mainLayout.setOrientation(LinearLayout.VERTICAL);
LinearLayout layout1 = new LinearLayout(this);
layout1.setOrientation(LinearLayout.HORIZONTAL);
CheckBox cb1 = new CheckBox(getApplicationContext());
cb1.setText("Easy");
layout1.addView(cb1);
layout1.setBackgroundColor(Color.BLUE);
layout1.setMinimumHeight(50);
LinearLayout layout2 = new LinearLayout(this);
layout2.setOrientation(LinearLayout.HORIZONTAL);
layout2.addView(new TextView(this));
CheckBox cb2 = new CheckBox(getApplicationContext());
cb2.setText("Normal");
layout2.addView(cb2);
layout2.setBackgroundColor(Color.CYAN);
layout2.setMinimumHeight(50);
LinearLayout layout3 = new LinearLayout(this);
layout3.setOrientation(LinearLayout.HORIZONTAL);
CheckBox cb3 = new CheckBox(getApplicationContext());
cb3.setText("Hard");
layout3.addView(cb3);
layout3.setBackgroundColor(Color.GREEN);
layout3.setMinimumHeight(50);
mainLayout.addView(layout1);
mainLayout.addView(layout2);
mainLayout.addView(layout3);
alert.setTitle("Custom alert demo");
alert.setView(mainLayout);
alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener()
@Override
public void onClick(DialogInterface dialog, int which)
dialog.cancel();
);
alert.setPositiveButton("Done", new DialogInterface.OnClickListener()
@Override
public void onClick(DialogInterface dialog, int which)
Toast.makeText(getBaseContext(), "done", Toast.LENGTH_SHORT).show();
);
alert.show();
El resultado:
En primer lugar, creé un diseño principal (vertical) como se ve en el código. Luego, para cada una de las casillas de verificación creé un diseño horizontal. En este caso, puedes jugar con los colores y las fuentes de los elementos (casillas de verificación, elementos, etc.). Espero que ayude.
Después de crear su diálogo:
AlertDialog dialog = builder.create();
dialog.show();
Button buttonPositive = dialog.getButton(DialogInterface.BUTTON_POSITIVE);
buttonPositive.setTextColor(ContextCompat.getColor(this, R.color.green));
Button buttonNegative = dialog.getButton(DialogInterface.BUTTON_NEGATIVE);
buttonNegative.setTextColor(ContextCompat.getColor(this, R.color.red));
El color del texto se toma de la colorAccent
valor establecido en styles.xml
(según el estilo que establezcas en tu actividad).
Acuérdate de que tienes concesión de añadir un criterio certero si diste con el resultado.