Я использую круговую ProgressBar
в моей Activty.My Проблема в том, что она не отображается правильно на моей странице, потому что мой цвет BG страницы такой же, как и ProgressBar. Так как я могу изменить цвет ProgressBar, чтобы сделать его видимым?
Пожалуйста, помогите
Как изменить цвет индикатора выполнения по умолчанию?
Ответ 1
Сделайте одно имя файла 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 файла установите для фона progressbars этот xml..
Как
<ProgressBar
android:id="@+id/ProgressBar01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background = "@xml/progress">
Ответ 2
Это старый вопрос, но использование темы здесь не упоминается. Если ваша тема по умолчанию использует 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));
Ответ 3
Самый простой способ - использовать android: indeterminateTint:
<ProgressBar
android:indeterminate="true"
android:indeterminateTint="@android:color/black"
........... />
Ответ 4
в xml u можно применить цвет, подобный этому
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/loader"
android:indeterminateTint="@color/my_color"
android:layout_centerInParent="true"/>
Ответ 5
создать доступный для выполнения файл
<?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" />
Ответ 6
вы также можете изменить только атрибут
android:indeterminateDrawable="@drawable/yourxmlfile"
и сохраните этот стиль
style="@android:style/Widget.ProgressBar.Small"
Ответ 7
вот как вы можете это сделать с помощью java-кода.
progressBar.getProgressDrawable().setColorFilter(ContextCompat.getColor(getActivity(),R.color.product_status_color), PorterDuff.Mode.MULTIPLY)
Ответ 8
Вот несколько объяснений. Для изменения фона Indeterminate ProgressBar
вам необходимо вращающееся кольцо, потому что оно вращается. В ответ @Chirag он определил вращающееся кольцо и применил его на фоне ProgressBar
. Если у вас есть Horizontal ProgressBar
, вам понадобится rectangle
.
PS: Я не пробовал другие формы.
Ответ 9
Вы также можете программно изменить цвет своей панели прогресса в своих действиях oncreate или ваших фрагментах onViewCreated()
pBar.getIndeterminateDrawable().setColorFilter(0xFFFF0000, android.graphics.PorterDuff.Mode.MULTIPLY);
Здесь применяется цвет "0xFFFF0000", красный. Вы можете изменить его в соответствии с вашими потребностями.
Ответ 10
Я использую версию 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>
Ответ 11
для меня эти две строки должны были быть там, чтобы он работал и менял цвет:
android:indeterminateTint="@color/yourColor"
android:indeterminateTintMode="src_in"
PS: но это доступно только с Android 21
Ответ 12
Попробуйте использовать это в XML
android:indeterminateDrawable="@drawable/yourxmlfile"
style="@android:style/Widget.ProgressBar.Small"