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);
}
}