所以我有一個具有形狀和純色的項目的圖層列表。現在我想在我的代碼中改變這種顏色。以編程方式切換進度條的顏色
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<clip>
<shape android:id="@+id/seekbar_shape_color">
<solid android:color="#FFD00000" />
</shape>
</clip>
</item>
</layer-list>
我tryed得到LayerDrawable和請求的第一個項目,現在IAM卡獲得clipDrawable最後得到ShapeDrawable
LayerDrawable sd = (LayerDrawable) v.getResources().getDrawable(R.drawable.seekbar_progress_bg);
((ClipDrawable) sd.getDrawable(0)).get..();
我的另一種方法是讓ShapeDrawable與colorFilter設置顏色但那也不管用。
ShapeDrawable sd = (ShapeDrawable) v.getResources().getDrawable(R.id.seekbar_shape_color);
sd.setColorFilter(R.color.cold_color,PorterDuff.Mode.MULTIPLY);
編輯:行,所以我制定了新的計劃 我tryed使用LevelList像
<level-list
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:maxLevel="0" android:drawable="@color/hot_color">
</item>
<item android:maxLevel="1" android:drawable="@color/cold_color">
</item>
</level-list>
我認爲級別的默認值是0,但我不明白的進度條與LevelList一起顯示。 此外,我不知道我必須設置setLevel()
holder.progressbar.getBackground().setLevel(0);
holder.progressbar.getIndeterminateDrawable().setLevel(0);
holder.progressbar.getProgressDrawable().setLevel(0);
這個電話給我奇怪的結果只喜歡新鮮進度項目獲得100%的進度着色上哪個元素,聞起來像緩存問題。
希望有人能賜教如何正確使用LevelList上LayerList的進度 感謝