¿Establecer un fondo a los botones en un diálogo?

Tengo un diálogo, que funciona muy bien para mí, pero quiero establecer mi fondo para dos botones en este diálogo. La estructura de la misma es bastante complicada, así que no quiero volver a escribirla en un diálogo personalizado. Pero en este caso, ¿hay alguna posibilidad de establecer un fondo (más específicamente, hay una manera de establecer un estilo de los botones positivo / negativo / neutro)?

Fundamentalmente desea acceder a los botones de diálogo: estos (en el AlertDialog estándar) tienen actualmente ids android.R.id.button1 para positivo, android.R.id.button2 para negativo y android.R.id.button3 para neutral.

Por ejemplo, para configurar la imagen de fondo en el botón neutral puede hacer esto:

 Dialog d; // // create your dialog into the variable d // ((Button)d.findViewById(android.R.id.button3)).setBackgroundResource(R.drawable.new_background); 

EDIT: esto es si está utilizando un AlertDialog.Builder para crearlo. Por lo que sé, estas asignaciones de botones pueden cambiar en el futuro, así que tenlo en cuenta.

EDIT: El fragmento de código a continuación debe generar algo que se parece a lo que desea. Resulta que tienes que llamar al show ANTES de cambiar el fondo

 AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage("TEST MESSAGE) .setPositiveButton("YES", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }) .setNegativeButton("NO", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }); AlertDialog alert = builder.create(); alert.show(); ((Button)alert.findViewById(android.R.id.button1)).setBackgroundResource(R.drawable.button_border); 

En realidad, hay una manera mejor y más fiable de obtener los botones para el Dialog que el publicado por @Femi.

Puede utilizar el método getButton :

 Button positiveButton = yourDialog.getButton(DialogInterface.BUTTON_POSITIVE); 

DialogInterface proporciona todas las constantes necesarias:

 DialogInterface.BUTTON_POSITIVE DialogInterface.BUTTON_NEUTRAL DialogInterface.BUTTON_NEGATIVE 

Por favor, permítanme señalar que esto sería una mala práctica para anular el método show () para dicho problema.

Para encapsular la solución en la creación del propio diálogo, la mejor práctica es tener la personalización de los botones dentro del constructor de diálogo:

 class CustomDialog extends AlertDialog { public CustomDialog(final Context context) { super(context); setOnShowListener(new OnShowListener() { @Override public void onShow(DialogInterface dialog) { Button negativeButton = getButton(DialogInterface.BUTTON_NEGATIVE); Button positiveButton = getButton(DialogInterface.BUTTON_POSITIVE); negativeButton.setBackgroundColor(Color.GREEN); positiveButton.setBackgroundColor(Color.RED); } } } } 
 AlertDialog alert = builder.create(); alert.show(); Button bn = alert.getButton(DialogInterface.BUTTON_NEGATIVE); bn.setBackgroundColor(Color.RED); Button bp = alert.getButton(DialogInterface.BUTTON_POSITIVE); bp.setBackgroundColor(Color.YELLOW); 
  • ¿Cómo evitar las filtraciones de Eclipse en XServer al editar archivos XML de Android?
  • "Unhandled Event Loop Exception" al hacer algo en Android XML
  • ¿Cómo mantener la consistencia con XML drawables a través de diferentes tamaños de pantalla?
  • Forma de analizar XML (org.w3c.Document) en Android
  • Error en el archivo strings.xml en Android
  • Android onClick en XML vs. OnClickListener
  • ¿Cómo inserto texto dentro de un rectángulo redondeado en la vista de Android?
  • Android: ¿es posible agregar un enlace que se puede hacer clic en un recurso de cadena
  • ¿Cómo puedo obtener una vista de texto para que aparezca debajo de otra vista de texto? Androide
  • Android: Múltiples vistas de los niños para una vista personalizada con un diseño existente
  • Hacer formas dinámicas (el mejor enfoque)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.