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

1 minuto de lectura

avatar de usuario
desarrollador

estoy usando 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í

ingrese la descripción de la imagen aquí

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.

  • stackoverflow.com/questions/4908289/…

    – IntelliJ Amiya

    1 de diciembre de 2015 a las 10:35

  • Posible duplicado de Cómo cambiar el color de progreso de la barra de progreso en Android

    – Mohan Rex

    1 de diciembre de 2015 a las 10:36

  • Puede ser una pregunta duplicada. Consulte

    – Mohan Rex

    1 de diciembre de 2015 a las 10:38

  • @MohanRex, el posible duplicado que ha planteado está mal. Porque esas preguntas de dirección sobre android.widget.ProgressBar y esta pregunta es sobre android.app.ProgressDialog. Ambos son totalmente diferentes. Así que borra tus banderas equivocadas

    – Shirish Herwade

    13 de junio de 2017 a las 8:44


  • avatar de usuario
    kapil rajput

    En style.xml, cree un estilo para el 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 esto "android:textColorPrimary" necesita definir el color que desea mostrar y en el código java definir el estilo de ProgressDialog me gusta :

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

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

    • Esto no cambia el color de la forma redonda.

      – Abhishek

      9 de mayo de 2016 a las 3:05


    • Además, “mostrar” es estático y no funciona con una nueva instancia de ProgressDialog.

      – mwieczorek

      21 de julio de 2016 a las 12:05

    • @color/black este es un valor clave para cambiar el color del círculo/giro del cargador.

      – B.shruti

      23 de agosto de 2017 a las 6:21

    • Todavía funciona en Kotlin. La clave, como se dijo antes, es ‘colorAccent’ en un nuevo estilo.

      – sergio

      14 de abril de 2021 a las 9:39

    Agregar estilo.xml

    <style name="MyAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
        <item name="colorAccent">@color/colorPrimary</item>
    </style>
    

    establecer el estilo para el cuadro de diálogo de progreso

    pdialog = new ProgressDialog(context, R.style.MyAlertDialogStyle);
    

    • ¡La mejor respuesta! Solo uno que hace exactamente lo que el autor de la pregunta quería.

      – Basvo

      27 de abril de 2018 a las 12:22

    • Gracias, esta respuesta es fácil y debería ser la respuesta correcta.

      – Ahmed Elsayed

      25 de agosto de 2021 a las 12:20

    avatar de usuario
    Umesh Sonawane

    ingrese la descripción de la imagen aquí

    Cree un diseño para el cuadro de diálogo de progreso con el nombre custom_progress_dialog.xml en la carpeta dibujable.

    <?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úrate de eso 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>
    

    avatar de usuario
    Milán Hlinák

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

    Revisa también 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();
    

    Obtenga el recurso del recurso de Android que utiliza ProgressDialog.

    final ProgressDialog progress = new ProgressDialog(context);
    progress.setTitle("Loading");
    progress.setMessage("Wait while loading...");
    progress.setCancelable(false); // disable dismiss by tapping outside of the dialog
    progress.show();
    ProgressBar progressbar=(ProgressBar)progress.findViewById(android.R.id.progress);
    progressbar.getIndeterminateDrawable().setColorFilter(Color.parseColor("#C60000"), android.graphics.PorterDuff.Mode.SRC_IN);
    

    Prueba esto:

    Ejemplo donde se establece el color en rojo:

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

    avatar de usuario
    Dhaval Parmar

    En tus Tema de la aplicacióncambio acento de color

    <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 el color que quieras

    ¿Ha sido útil esta solución?