私は、図形と単色の項目を持つレイヤーリストを持っています。今私は自分のコード内でこの色を変更したい。プログレスバーの色をプログラムで切り替える
<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>
iはLayerDrawable取得し、最初の項目を要求して、今、私の他のアプローチはShapeDrawableを取得することでした
LayerDrawable sd = (LayerDrawable) v.getResources().getDrawable(R.drawable.seekbar_progress_bg);
((ClipDrawable) sd.getDrawable(0)).get..();
ShapeDrawableを取得し、最終的clipDrawableを取得して立ち往生し、IAMと色フィルタで色を設定しようと試みしかしそれはどちらもうまくいかない。
ShapeDrawable sd = (ShapeDrawable) v.getResources().getDrawable(R.id.seekbar_shape_color);
sd.setColorFilter(R.color.cold_color,PorterDuff.Mode.MULTIPLY);
編集:ので、私は新しい計画 を開発し[OK]を、私はレベルのデフォルト値は0であると思いますが、私は得るいけない
<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>
のようなLevelListを使用するようにしようと試みましたプログレスバーはLevelListとともに表示されます。 はまた、私は私がでsetLevel()
holder.progressbar.getBackground().setLevel(0);
holder.progressbar.getIndeterminateDrawable().setLevel(0);
holder.progressbar.getProgressDrawable().setLevel(0);
この呼び出しは私に100%の進捗着色を得る唯一の新鮮なプログレスバーの項目のような奇妙な結果を与えることを設定する必要が上のどの要素を知らない、キャッシュの問題のようなにおい。誰かが私はこの質問は数ヶ月古いですが、私は進歩での作業レベルのリストを取得することができたノウハウProgressBarのレイヤリストに適切に おかげ