アプリに合わせてイコライザーを作成しましたが、シークバーのつまみと進行状況の色をどのように変更できるかわかりません。デフォルトではピンクのようですが、それは私のアプリの美的感覚には合いません。
SeekBar seekBar = new SeekBar(this);
seekBar.setId(i);
seekBar.setLayoutParams(layoutParams);
seekBar.setMax(upperEqualizerBandLevel - lowerEqualizerBandLevel);
seekBar.setProgress(mEqualizer.getBandLevel(equalizerBandIndex));
//seekBar.setBackgroundColor(Color.DKGRAY);
//seekBar.setDrawingCacheBackgroundColor(Color.DKGRAY);
Seekbar
サムの色を変更するには、style.xml
で新しいスタイルを作成します
<style name="SeekBarColor"
parent="Widget.AppCompat.SeekBar">
<item name="colorAccent">@color/your_color</item>
</style>
最後にレイアウト:
<SeekBar
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:theme="@style/SeekBarColor" />
Seekbar
進行色を変更するには、これをJavaクラスで使用します。
seekBar.getProgressDrawable().setColorFilter("yourcolor", PorterDuff.Mode.MULTIPLY);
これらはどちらもAPI> 16で機能します。
編集
JavaコードでSeekBarのつまみの色を変更するには。
seekBar.getProgressDrawable().setColorFilter(getResources().getColor(R.color.your_color), PorterDuff.Mode.SRC_ATOP);
スタイルを使用することは良い考えですが、プログラムで色を割り当てたい場合は特に柔軟性がありません。
//for the progress seekBar.getProgressDrawable().setColorFilter(mThemeColor,PorterDuff.Mode.SRC_ATOP); //for the thumb handle seekBar.getThumb().setColorFilter(mThemeColor, PorterDuff.Mode.SRC_ATOP);
次のように、プログラムでシークバーのつまみと進行状況の色を変更できます。
seekBar.getProgressDrawable().setColorFilter(Utils.getAccentColor(this), PorterDuff.Mode.SRC_IN);
seekBar.getThumb().setColorFilter(Utils.getAccentColor(this), PorterDuff.Mode.SRC_IN);
このようにシークバーを呼び出す必要があります
SeekBar newSeek = new SeekBar(this, null, R.style.YOUR_NEW_STYLE);
どこ YOUR_NEW_STYLE
は、必要なSeekbar
の色を定義します。
コードで簡単に変更できます
例えば:
seekbar.setProgressTintList(ColorStateList.valueOf(Color.parseColor(#000000)));
または
seekbar.setProgressTintList(ColorStateList.valueOf(Color.RED));
それが将来誰かのために役立つことを願っています。
もう少し桃色の答え
public static void setSeekBarColor(SeekBar seekBar, int color) {
seekBar.getProgressDrawable().setColorFilter(color, PorterDuff.Mode.MULTIPLY);
seekBar.getThumb().setColorFilter(color, PorterDuff.Mode.SRC_ATOP);
}
これを試して :
seekBar.getProgressDrawable().setColorFilter(getResources().getColor(R.color.mcolor), PorterDuff.Mode.MULTIPLY);