Подтвердить что ты не робот

Как изменить цвет окружения ProgressDialog по умолчанию в android

Я использую ProgressDialog для отображения progressbar

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

И все будет так

введите описание изображения здесь

Я хочу изменить зеленый цвет круга на красный. есть ли какой-нибудь способ?

Я пробовал

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

Но не работает.

4b9b3361

Ответ 1

В style.xml создать стиль для диалогового окна:

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

В этом "android:textColorPrimary" необходимо определить цвет, который вы хотите показать, и в java-коде определить стиль ProgressDialog как:

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

БОЛЬШЕ: http://androidprogressdialogcustomcolor.blogspot.in/

Ответ 2

enter image description here

Создайте макет для диалогового окна прогресса с именем custom_progress_dialog.xml в папке для рисования.

<?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>

убедитесь, что indeterminate = true and android:indeterminateDrawable="@drawable/custom_progress_background" В макете действия, где вы хотите использовать загрузчик

<?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>

Ответ 3

Добавить Style.xml

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

установить стиль для диалога прогресса

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

Ответ 4

Это не идеальное решение, но может помочь.

Также проверьте мой предыдущий комментарий. fooobar.com/questions/49648/...

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

Ответ 5

Попробуйте следующее:

Пример настройки цвета на красный:

ProgressBar spinner = new android.widget.ProgressBar(
                context,
                null,
                android.R.attr.progressBarStyle);

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

Ответ 6

В Тема приложения измените 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>

используйте любой цвет, который вы хотите

Ответ 7

Получить ресурс из ресурса Android, который используется 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);

Ответ 8

Идеальное и простое решение для пользовательского цветового индикатора. Пользовательский индикатор выполнения

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

и используйте его в своем макете.

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

Ответ 9

Если вы хотите определить цветной ad-hoc, без необходимости наследования или выделенного XML, вы можете использовать что-то вроде этого:

/** 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());
}

Ответ 10

Если вы уже используете библиотеку материалов (https://github.com/afollestad/material-dialogs#indeterminate-progress-dialogs), самым простым решением может быть использование диалога прогресса из этой библиотеки. Круг будет автоматически окрашен в основной цвет:

MaterialDialog dialog = new MaterialDialog.Builder(context)
                    .content(R.string.loading)
                    .progress(true, 0)
                    .show();