Как изменить цвет индикатора выполнения по умолчанию? - PullRequest
24 голосов
/ 21 июня 2011

Я использую круговую ProgressBar в моей Activty.My Проблема в том, что она не отображается должным образом на моей странице, потому что цвет BG моей страницы такой же, как и ProgressBar.1003 * чтобы это было правильно видно?Пожалуйста, помогите

Ответы [ 12 ]

45 голосов
/ 21 июня 2011

Создайте одно xml-файл progress.xml, поместите его в папку res / xml и напишите приведенный ниже код в этот 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="76dip" android:height="76dip" />
        <gradient android:type="sweep" android:useLevel="false"
            android:startColor="#447a29" 
            android:endColor="#447a29"
            android:angle="0"
             />
    </shape>
</rotate> 

после создания этого xml-файла установите фон для индикатора выполнения в следующем видеxml ..

Как

<ProgressBar
  android:id="@+id/ProgressBar01" 
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:background = "@xml/progress">
28 голосов
/ 10 сентября 2016

Это старый вопрос, но использование темы здесь не упоминается. Если используемая вами тема по умолчанию использует AppCompat, цвет вашего ProgressBar будет colorAccent, который вы определили.

Изменение colorAccent также изменит цвет ProgressBar, но эти изменения также отражаются в нескольких местах. Итак, если вы хотите другой цвет только для определенного ProgressBar, вы можете сделать это, применив тему только к этому ProgressBar:

  • Расширение темы по умолчанию и переопределение colorAccent

    <style name="AppTheme.WhiteAccent">
        <item name="colorAccent">@color/white</item> <!-- Whatever color you want-->
    </style>
    
  • А в ProgressBar добавить атрибут android:theme:

    android:theme="@style/AppTheme.WhiteAccent"
    

Так это будет выглядеть примерно так:

<ProgressBar
        android:id="@+id/loading"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:padding="10dp"
        android:theme="@style/AppTheme.WhiteAccent" />

То есть вы просто меняете colorAccent для вашего конкретного ProgressBar.

Примечание : Использование style не будет работать. Вам нужно использовать только android:theme. Вы можете найти больше использования темы здесь: https://plus.google.com/u/0/+AndroidDevelopers/posts/JXHKyhsWHAH

Редактировать

Вот код для изменения цвета ProgressBar программно.

ProgressBar progressBar = (ProgressBar) findViewById(R.id.pb_listProgressBar);
int colorCodeDark = Color.parseColor("#F44336");
progressBar.setIndeterminateTintList(ColorStateList.valueOf(colorCodeDark));
11 голосов
/ 26 августа 2016

Самый простой способ - использовать атрибут android: indeterminateTint:

<ProgressBar
        android:indeterminate="true"
        android:indeterminateTint="@android:color/black"
        ........... />
1 голос
/ 09 ноября 2017

создать файл рисования прогресса

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

<item android:id="@android:id/background">
    <shape>
        <corners android:radius="5dip" />
        <solid android:color="@color/colorWhite" />
    </shape>
</item>

<item android:id="@android:id/secondaryProgress">
    <clip>
        <shape>
            <corners android:radius="5dip" />
            <solid android:color="@color/colorPrimary" />
        </shape>
    </clip>
</item>

<item android:id="@android:id/progress">
    <clip>
        <shape>
            <corners
                android:radius="5dip" />
            <solid android:color="@color/colorPrimary" />
        </shape>
    </clip>
</item>

и установить Android: progressDrawable = "@ вытяжка / app_progressbar_back"

как это

<ProgressBar
                android:id="@+id/dialogProgressView"
                style="?android:attr/progressBarStyleHorizontal"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:progressDrawable="@drawable/app_progressbar_back"
                android:progress="50"
                android:layout_marginTop="@dimen/margin_20" />
1 голос
/ 31 мая 2017

в xml вы можете применять такой цвет

<ProgressBar
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/loader"
    android:indeterminateTint="@color/my_color"
    android:layout_centerInParent="true"/>
0 голосов
/ 08 июля 2019

для меня эти две строки должны были быть там, чтобы он работал и изменил цвет:

android:indeterminateTint="@color/yourColor"
android:indeterminateTintMode="src_in"

PS: но он доступен только с Android 21

0 голосов
/ 19 апреля 2019

Я использую версию Android 2.3.1.Я создаю XML-файл с именем progressbar и вызываю его в теге индикатора выполнения макета android: progressDrawable = "@ drawable / progressbar"

<item android:id="@+id/progress">
    <clip>
    <shape>
        <gradient android:startColor="@color/textColor"
            android:centerColor="@color/textColor"
            android:endColor="@color/textColor"
            android:gradientRadius="20dp"
            >
        </gradient>
    </shape>
    </clip>
</item>

0 голосов
/ 05 декабря 2017

Вы также можете программно изменить цвет индикатора выполнения в ваших действиях по созданию или в ваших фрагментах onViewCreated ()

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

Здесь применяется цвет "0xFFFF0000", который красный.Вы можете изменить его в соответствии с вашими потребностями

0 голосов
/ 12 мая 2017

Вот некоторые объяснения. Для изменения фона Indeterminate ProgressBar вам нужно вращающееся кольцо, потому что оно вращается. В ответе @Chirag он определил вращающееся кольцо и применил его к фону ProgressBar. Если у вас Horizontal ProgressBar, тогда вам нужно rectangle.

PS: я не пробовал с другими формами.

0 голосов
/ 08 сентября 2016

вот как вы можете сделать это с помощью кода Java.

progressBar.getProgressDrawable().setColorFilter(ContextCompat.getColor(getActivity(),R.color.product_status_color), PorterDuff.Mode.MULTIPLY)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...