Я Drawable файла XML, который стоит на моем пользовательском прогресс бар:Изменения формы сплошного цвета во время выполнения
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/background">
<shape
android:innerRadiusRatio="3"
android:shape="ring"
android:useLevel="false"
android:thicknessRatio="6.4">
<solid android:color="@android:color/transparent" />
<stroke
android:width="2dp"
android:color="@android:color/darker_gray" />
</shape>
</item>
<item android:id="@+id/progress">
<rotate
android:fromDegrees="270"
android:toDegrees="270">
<shape
android:innerRadiusRatio="3"
android:shape="ring"
android:thicknessRatio="7.0">
<solid
android:id="@+id/progressColor"
android:color="#FBB817" />
</shape>
</rotate>
</item>
</layer-list>
Используется здесь:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="150dip"
android:id="@+id/relativeLayout">
<ProgressBar
android:id="@+id/progressBar"
style="@android:style/Widget.ProgressBar.Horizontal"
android:layout_width="150dip"
android:layout_height="150dip"
android:layout_centerHorizontal="true"
android:indeterminate="false"
android:progressDrawable="@drawable/progressbar" />
<TextView
android:id="@+id/tvProgress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="progress" />
</RelativeLayout>
мне нужно изменить сплошной цвет с идентификатором progressColor
в время выполнения основано на некоторых условиях. Пробовал все здесь, и для меня ничего не работает. Какие-либо предложения?
Я попытался изменить его так:
LayerDrawable layerDrawable = (LayerDrawable) getResources().getDrawable(R.drawable.progressbar);
layerDrawable.setDrawableByLayerId(R.id.progressColor, new ColorDrawable(Color.BLUE));
progressBar.setProgressDrawable(layerDrawable);
Но это ничего не меняет.
Я нашел решение здесь:
View v = findViewById(R.id.relativeLayout);
LayerDrawable layerDrawable = (LayerDrawable) v.getBackground();
final GradientDrawable shape = (GradientDrawable) layerDrawable.findDrawableByLayerId(R.id.progressColor);
shape.setColor(Color.BLACK);
Но это просто врезаться мое приложение.
Пожалуйста, объясните, что у вас до сих пор. – alanv