Tengo una actividad principal donde los usuarios pueden cambiar (a través de preferencias) el color de fondo a su color favorito. Mi problema es que no puedo cambiar el color de fondo de ningún cuadro de diálogo personalizado.¿Cómo cambiar el color de fondo del diálogo mediante programación?
Otras respuestas en desbordamiento de pila sugieren:
(a) overiding the default theme para el color preferido. No creo que sea una solución adecuada en este caso, ya que sé que cambiar los temas en tiempo de ejecución no es recomendable.
(b) Changing in styles.xml (no es adecuado en este caso, ya que no puedo cambiar en tiempo de ejecución)
(c) Overriding the AlertBuilder class (pero esto tintes todo el diálogo de alerta)
Esta más cerca que han llegado cambiar el color es eliminar el título del generador de alertas y establecer el fondo de la vista personalizada en el color favorito (por ejemplo, color rosa). Desafortunadamente, esto da una tira fea en la parte superior e inferior del cuadro de diálogo.
El código se incluye después de la imagen, las sugerencias sobre cómo cambiar el fondo del diálogo serían muy apreciadas.
Código de la apariencia predeterminada
protected Dialog onCreateDialog(int dialogId) {
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
final View viewMessEdit = inflater.inflate(R.layout.example,(ViewGroup) findViewById(R.id.dialog_mess_edit_root));
builder.setView(viewMessEdit);
builder.setTitle("Alert builder's title");
}
Código para cambiar el color de diálogo personalizado vistas de fondo (y el título del constructor de alerta se retira)
protected Dialog onCreateDialog(int dialogId) {
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
final View viewMessEdit = inflater.inflate(R.layout.example,(ViewGroup) findViewById(R.id.dialog_mess_edit_root));
builder.setView(viewMessEdit);
viewMessEdit.setBackgroundResource(R.color.pink_dark);
}
¿Puedes terminar este diálogo como tu foto? Si es así, ¿puedes compartir? – pengwang