Estoy tratando de cambiar el fondo de un ProgressDialog
. Busqué en la red y encontré varias sugerencias (como ¿Cómo eliminar el borde del diálogo? ), Pero no puedo reemplazar el fondo real de ProgressDialog
. En su lugar, obtengo otro fondo (amarillo) detrás del diálogo:
Mi estilo:
@drawable/panel_background
El código que lanza el ProgressDialog
:
ProgressDialog dialog = new ProgressDialog(this, R.style.StyledDialog); dialog.setTitle("The title"); dialog.setMessage("The message."); dialog.show();
El dibujable es el mismo parche que está incluido en el SDK, acabo de cambiar a color. Agradecería mucho algunos consejos sobre lo que estoy haciendo mal.
El comentario de Aleks G (debajo de la pregunta) apunta en la dirección correcta. La apariencia del diálogo está definida por un estilo diferente ( android:alertDialogStyle
). Pero uno no puede aplicar el estilo directamente a un ProgressDialog
. Ahora, ¿cómo obtengo ese fondo amarillo?
Paso 1 : defina un tema que hereda de Theme.Dialog
:
Allí, puede definir cosas como el color de fondo para toda la ventana (amarillo en la pregunta), colores de fuente, etc. Lo que realmente importa es la definición de android:alertDialogStyle
. Este estilo controla la apariencia del área negra en la pregunta.
Paso 2 : defina CustomAlertDialogStyle
:
Esto establece el área negra de la pregunta en amarillo.
Paso 3 : aplique MyTheme
al ProgressDialog
, no CustomAlertDialogStyle
:
ProgressDialog dialog = new ProgressDialog(this, R.style.MyTheme);
Y aquí está el resultado:
El mismo procedimiento funciona con AlertDialog
(que es la clase principal de ProgressDialog
).
Puedes probar mi esencia . Básicamente establece un filtro de color en drawable.
import android.content.Context; import android.graphics.Color; import android.util.AttributeSet; import android.widget.ProgressBar; public class ColoredProgressBar extends ProgressBar { public ColoredProgressBar(Context context) { super(context); if (!isInEditMode()) init(); } public ColoredProgressBar(Context context, AttributeSet attrs) { super(context, attrs); if (!isInEditMode()) init(); } public ColoredProgressBar(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); if (!isInEditMode()) init(); } /** * Changes color. */ private void init() { getIndeterminateDrawable().setColorFilter(Color.BLUE, android.graphics.PorterDuff.Mode.MULTIPLY); } }