studio programacion para móviles libro edición desarrollo desarrollar curso aprende aplicaciones android android-layout android-dialog

android - programacion - Cambiar el fondo de ProgressDialog



manual de programacion android pdf (2)

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 :

<style name="MyTheme" parent="@android:style/Theme.Dialog"> <item name="android:alertDialogStyle">@style/CustomAlertDialogStyle</item> <item name="android:textColorPrimary">#000000</item> </style>

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 :

<style name="CustomAlertDialogStyle"> <item name="android:bottomBright">@color/yellow</item> <item name="android:bottomDark">@color/yellow</item> <item name="android:bottomMedium">@color/yellow</item> <item name="android:centerBright">@color/yellow</item> <item name="android:centerDark">@color/yellow</item> <item name="android:centerMedium">@color/yellow</item> <item name="android:fullBright">@color/yellow</item> <item name="android:fullDark">@color/yellow</item> <item name="android:topBright">@color/yellow</item> <item name="android:topDark">@color/yellow</item> </style>

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 ).

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:

<style name="StyledDialog" parent="@android:style/Theme.Dialog"> <item name="android:windowBackground">@drawable/panel_background</item> </style>

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.


Puedes probar mi gist . 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); } }