¿Es posible personalizar los botones positivos y negativos en AlertDialog?

¿Es posible personalizar los botones positivos y negativos en AlertDialog? Tengo que reemplazar el aspecto predeterminado de positivo y negativo con la costumbre.

.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {... .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {... 

¿Puede alguien decirme cómo hacer eso?

 public class ComentarDialog extends DialogFragment{ @Override public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setMessage("Mensaje de alerta") .setTitle("Comentar") .setPositiveButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { } }) .setNegativeButton("CANCELAR", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { } }); return builder.create(); } @Override public void onStart() { super.onStart(); //Personalizamos Resources res = getResources(); //Buttons Button positive_button = ((AlertDialog) getDialog()).getButton(DialogInterface.BUTTON_POSITIVE); positive_button.setBackground(res.getDrawable(R.drawable.btn_selector_dialog)); Button negative_button = ((AlertDialog) getDialog()).getButton(DialogInterface.BUTTON_NEGATIVE); negative_button.setBackground(res.getDrawable(R.drawable.btn_selector_dialog)); int color = Color.parseColor("#304f5a"); //Title int titleId = res.getIdentifier("alertTitle", "id", "android"); View title = getDialog().findViewById(titleId); if (title != null) { ((TextView) title).setTextColor(color); } //Title divider int titleDividerId = res.getIdentifier("titleDivider", "id", "android"); View titleDivider = getDialog().findViewById(titleDividerId); if (titleDivider != null) { titleDivider.setBackgroundColor(color); } } } 

Si quieres cambiarlos, te sugeriré que utilices la actividad con tu diseño requerido y que los agregues = Diálogo en tu actividad, en el archivo Manifest

Si desea personalizar puede utilizar el diálogo en lugar de diálogo de alerta aquí es el código de ejemplo

  final Dialog dialog = new Dialog(ThisweekActivity.this, android.R.style.Theme_Translucent_NoTitleBar); View view = LayoutInflater.from(ThisweekActivity.this).inflate(R.layout.issue_cover_prompt_layout, null); view.findViewById(R.id.close_btn).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dialog.dismiss(); } }); ImageView img = (ImageView) view.findViewById(R.id.issue_cover_img); img.setImageBitmap(issue.getCoverImage()); dialog.setContentView(view); dialog.show(); 

Puede establecer establecer el diseño en el cuadro de diálogo y agregar el listner de clics en él

Yuo puede establecer cada vista en el cuadro de diálogo. Usted puede fijar la visión con dos botones y no fijar los botones positivos y negativos.

ejemplo:

 AlertDialog.Builder builder = new AlertDialog.Builder(this); View dialogView = LayoutInflater.from(this) .inflate(R.layout.my_layout, null); builder.setView(dialogView); 
  • Cómo cambiar el color del puntero de EditText (no el cursor)
  • Tamaño de la tostada en Galaxy Nexus
  • ¿Cómo mostrar el diálogo en el método onCreate?
  • ¿Mantener el punto culminante del elemento seleccionado en el fragmento?
  • Actualización de Android TextView regularmente para mostrar la cuenta atrás
  • Biblioteca de vista o fragmento para componer la interfaz de usuario para tipos de datos comunes
  • ¿Cómo puedo escribir mi propio menú contextual para copiar y pegar?
  • Cómo hacer que el encabezado ListView esté estático
  • RemoteViewsFactory llamado getViewAt cuando el dataset vacío
  • Los elementos ListView no se ponen visualmente "resaltados" cuando se seleccionan durante el modo de acción contextual
  • Ejemplo de uso de pestañas de Android con Vistas en lugar de Actividades?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.