Progress Bar цвет пустой части

113
12 декабря 2019, 16:20

Как можно настроить Progress Bar, чтобы было примерно как на скрине

Например 50% заполнено зеленым,а остальное вторым цветом. По факту нужно,чтобы зеленый накладывался на второй цвет...например если 10% зеленого,то 90% оранжевый и т.д

Answer 1

Создал drawable/test.xml с таким содержимым

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Define the background properties like color etc -->
<item android:id="@android:id/background">
    <shape>
        <gradient
            android:startColor="@color/DarkOrange"
            android:centerColor="@color/DarkOrange"
            android:centerY="1.0"
            android:endColor="@color/DarkOrange"
            android:angle="270"
            />
    </shape>
</item>
<!-- Define the progress properties like start color, end color etc -->
<item android:id="@android:id/progress">
    <clip>
        <shape>
            <gradient
                android:startColor="@color/colorAccent"
                android:centerColor="@color/colorAccent"
                android:centerY="1.0"
                android:endColor="@color/colorAccent"
                android:angle="270"
                />
        </shape>
    </clip>
</item>

И вот так подключил

 <ProgressBar
                android:id="@+id/progressBar3"
                style="?android:attr/progressBarStyleHorizontal"
                android:layout_width="match_parent"
                android:layout_height="5dp"
                android:progress="30"
                android:progressDrawable="@drawable/test" />

Получилось в итоге

Answer 2

Насчет "накладывался" не знаю, но у прогрессбара есть параметр android:progressBackgroundTint, который задает фоновый цвет (т.е. цвет "пустой части" и параметр android:progressTintMode, который определяет режим совмещения основного и фонового цветов. Можете поиграться с add или multiply. А можно изначально прямо задать два нужных цвета.

android:progressTint="#00ff00"
android:progressBackgroundTint="#990000"
android:progressTintMode="add"

Выбираете два нужных цвета, в коде потом устанавливаете на нужную позицию

ProgressBar pb = findViewById(R.id.progressBar);
pb.setProgress(int value);

А для увеличения высоты полоски можно использовать параметр

android:scaleY="8"
READ ALSO
Можно ли передать информацию из одного Intent в две разных активити?

Можно ли передать информацию из одного Intent в две разных активити?

Можно ли из 1 intent предать информацию в 2 разных Activity, по нажатию кнопки// Это о куда надо предать картинку

121
Создание grid сетки с разной высотой

Создание grid сетки с разной высотой

Собственно, что хочу и что получаю:

128
изменение ссылок и последующий апдейт html

изменение ссылок и последующий апдейт html

Необходимо найти все ссылки на странице и изменить их при парсингеЯ грабблю yandex

133
Пользовательские функции

Пользовательские функции

Сделал скрипт пользовательской функции для Google Tab, которая забирает значение активной ячейки и помещает в соседнюю с той, где введена пользовательская...

106