Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Cómo cambiar el color del círculo ProgressDialog predeterminado en android

Estoy utilizando ProgressDialog para mostrar la barra de progreso

  ProgressDialog progressDialog = new ProgressDialog(context); progressDialog.setCancelable(false); progressDialog.setMessage(message); progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); progressDialog.show(); 

Y viene así

Introduzca aquí la descripción de la imagen

Quiero cambiar el color verde del círculo a rojo. ¿hay alguna manera?

Lo intenté

 .getIndeterminateDrawable().setColorFilter(0xFFFFFFFF, android.graphics.PorterDuff.Mode.MULTIPLY); 

Pero no funciona.

8 Solutions collect form web for “Cómo cambiar el color del círculo ProgressDialog predeterminado en android”

En style.xml crear estilo para cuadro de diálogo:

 <style name="AppCompatAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert"> <item name="colorAccent">@color/black</item> <item name="android:textColorPrimary">@color/white</item> <item name="android:background">@color/grey_dialog_box</item> </style> 

En este "android:textColorPrimary" necesidad de definir el color que desea mostrar y en el código java definir el estilo de ProgressDialog como:

 ProgressDialog progressDialog = new ProgressDialog(context,R.style.AppCompatAlertDialogStyle); 

MÁS: http://androidprogressdialogcustomcolor.blogspot.in/

Prueba esto:

Ejemplo de configuración del color en rojo:

 ProgressBar spinner = new android.widget.ProgressBar( context, null, android.R.attr.progressBarStyle); spinner.getIndeterminateDrawable().setColorFilter(0xFFFF0000, android.graphics.PorterDuff.Mode.MULTIPLY); 

Introduzca aquí la descripción de la imagen

Cree el diseño del diálogo de progreso con el nombre custom_progress_dialog.xml en la carpeta de diseño.

 <?xml version="1.0" encoding="utf-8"?> <rotate xmlns:android="http://schemas.android.com/apk/res/android" android:pivotX="50%" android:pivotY="50%" android:fromDegrees="0" android:toDegrees="360"> <shape android:shape="ring" android:innerRadiusRatio="3" android:thicknessRatio="8" android:useLevel="false"> <size android:width="56dip" android:height="56dip" /> <gradient android:type="sweep" android:useLevel="false" android:startColor="@android:color/transparent" android:endColor="#1e9dff" android:angle="0" /> </shape> </rotate> 

Asegúrese de que indeterminate = true y android:indeterminateDrawable="@drawable/custom_progress_background" En el diseño de la actividad donde desea utilizar el cargador

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/loadingPanel" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center"> <ProgressBar android:layout_width="wrap_content" style="?android:attr/progressBarStyleLarge" android:layout_height="wrap_content" android:indeterminateDrawable="@drawable/custom_progress_dialog" android:indeterminate="true" /> </RelativeLayout> 

En su tema de aplicación , cambie colorAccent

 <style name="AppTheme.Bash" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">Add your color here</item> <item name="android:windowBackground">@color/gray</item> </style> 

Usa cualquier color que quieras

Esta no es una solución perfecta, pero puede ayudar.

También compruebe mi comentario anterior. https://stackoverflow.com/a/39687893/2598453

 final ProgressDialog progress = new ProgressDialog(this); progress.setMessage(getString(R.string.progress_message)); progress.setIndeterminate(true); progress.setCancelable(false); if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { Drawable drawable = new ProgressBar(this).getIndeterminateDrawable().mutate(); drawable.setColorFilter(ContextCompat.getColor(this, R.color.colorAccent), PorterDuff.Mode.SRC_IN); progress.setIndeterminateDrawable(drawable); } progress.show(); 

La solución perfecta y simple para la barra de progreso personalizada de color. Barra de progreso personalizada

 public class CustomProgressBar extends ProgressBar{ public CustomProgressBar(Context context) { super(context); this.setIndeterminate(true); this.getIndeterminateDrawable().setColorFilter(getResources().getColor(R.color.app_blue), PorterDuff.Mode.MULTIPLY); } public CustomProgressBar(Context context, AttributeSet attrs) { super(context, attrs); this.getIndeterminateDrawable().setColorFilter(getResources().getColor(R.color.app_blue), PorterDuff.Mode.MULTIPLY); } public CustomProgressBar(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } } 

Y utilizarlo en su diseño.

 <RelativeLayout android:id="@+id/loadingPanel" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:visibility="gone"> <com.mayproject.views.CustomProgressBar android:layout_width="wrap_content" android:layout_height="wrap_content" /> </RelativeLayout> 

Si desea definir el color ad-hoc, sin necesidad de herencia o XML dedicado, puede utilizar algo como esto:

 /** Styles a ProgressDialog to use a themed Spinner. */ public void setStyledProgressDialog(final Context pContext, final ProgressDialog pProgressDialog, final int pColorResourceId) { // Allocate a new ProgressBar. final ProgressBar lProgressBar = new android.widget.ProgressBar(pContext, null, android.R.attr.progressBarStyle); // Configure the IndeterminateDrawable. lProgressBar.getIndeterminateDrawable().setColorFilter(ContextCompat.getColor(pContext, pColorResourceId), android.graphics.PorterDuff.Mode.MULTIPLY); // Assign the ProgressBar to the ProgressDialog. pProgressDialog.setIndeterminateDrawable(lProgressBar.getIndeterminateDrawable()); } 

Si ya utiliza la biblioteca de diálogos de materiales ( https://github.com/afollestad/material-dialogs#indeterminate-progress-dialogs ), la solución más simple podría ser usar el diálogo de progreso desde esa biblioteca. El círculo se coloreará automáticamente con el color primario:

 MaterialDialog dialog = new MaterialDialog.Builder(context) .content(R.string.loading) .progress(true, 0) .show(); 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.