web-dev-qa-db-ja.com

AndroidでSeekBarの色を変更する方法は? (プログラムで)

アプリに合わせてイコライザーを作成しましたが、シークバーのつまみと進行状況の色をどのように変更できるかわかりません。デフォルトではピンクのようですが、それは私のアプリの美的感覚には合いません。

 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);
7
Alpoe

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().getCo‌​lor(R.color.your_color‌​), PorterDuff.Mode.SRC_ATOP);
13
Abhi

スタイルを使用することは良い考えですが、プログラムで色を割り当てたい場合は特に柔軟性がありません。

//for the progress seekBar.getProgressDrawable().setColorFilter(mThemeColor,PorterDuff.Mode.SRC_ATOP); //for the thumb handle seekBar.getThumb().setColorFilter(mThemeColor, PorterDuff.Mode.SRC_ATOP);

5
Georges daou

次のように、プログラムでシークバーのつまみと進行状況の色を変更できます。

   seekBar.getProgressDrawable().setColorFilter(Utils.getAccentColor(this), PorterDuff.Mode.SRC_IN);
   seekBar.getThumb().setColorFilter(Utils.getAccentColor(this), PorterDuff.Mode.SRC_IN);
1
twenk11k

このようにシークバーを呼び出す必要があります

SeekBar newSeek = new SeekBar(this, null, R.style.YOUR_NEW_STYLE);

どこ YOUR_NEW_STYLEは、必要なSeekbarの色を定義します。

0
Sunny

コードで簡単に変更できます

例えば:

seekbar.setProgressTintList(ColorStateList.valueOf(Color.parseColor(#000000)));

または

seekbar.setProgressTintList(ColorStateList.valueOf(Color.RED));

それが将来誰かのために役立つことを願っています。

0
Sachin Varma

もう少し桃色の答え

public static void setSeekBarColor(SeekBar seekBar, int color) {
    seekBar.getProgressDrawable().setColorFilter(color, PorterDuff.Mode.MULTIPLY);
    seekBar.getThumb().setColorFilter(color, PorterDuff.Mode.SRC_ATOP);
}
0
ucMedia

これを試して :

seekBar.getProgressDrawable().setColorFilter(getResources().getColor(R.color.mcolor), PorterDuff.Mode.MULTIPLY);
0
Oussema Aroua