Я создал свои собственные индикаторы выполнения (с формами и градиентами внутри), и теперь я хочу, чтобы они меняли цвет в соответствии со значениями. Например, добивайтесь прогресса на зеленом и желтом фоне, когда цель достигнута. Моя проблема в том, что я не знаю, как получить доступ к отдельным цветам элементов в моем Java-коде (учитывая, что у меня много экземпляров progressBars, и я хочу обрабатывать их по отдельности).
Например, я хотел бы изменить во время выполнения значения этого:
Android: ENDCOLOR = "@ цвет / progressBar03GradientEnd"
android: startColor = "@ color / progressBar03GradientStart"
Вы можете увидеть здесь Drawables, которые я создал:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background"
android:gravity="center_vertical|fill_horizontal">
<shape android:shape="rectangle"
android:tint="?attr/colorControlNormal">
<corners android:radius="8dp"/>
<size android:height="16dp" />
<solid android:color="#90caf9" />
</shape>
</item>
<item android:id="@android:id/secondaryProgress"
android:gravity="center_vertical|fill_horizontal">
<scale android:scaleWidth="100%">
<shape android:shape="rectangle"
android:tint="?attr/colorControlHighlight">
<corners android:radius="8dp"/>
<size android:height="16dp" />
<solid android:color="#90caf9" />
</shape>
</scale>
</item>
<item android:id="@android:id/progress"
android:gravity="center_vertical|fill_horizontal">
<scale android:scaleWidth="100%">
<shape android:shape="rectangle">
<!-- Please check these down are the right colors -->
<gradient
android:endColor="@color/progressBar03GradientEnd"
android:startColor="@color/progressBar03GradientStart" />
<corners android:radius="8dp"/>
<size android:height="16dp" />
</shape>
</scale>
</item>
</layer-list>