如何在android中更改SeekBar颜色? (编程)

时间:2017-07-26 14:00:52

标签: java 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);

8 个答案:

答案 0 :(得分:6)

要更改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 Class中使用它。

seekBar.getProgressDrawable().setColorFilter("yourcolor", PorterDuff.Mode.MULTIPLY);

这些都适用于API&gt; 16。

修改

通过Java代码更改SeekBar拇指颜色。

 seekBar.getProgressDrawable().setColorFilter(getResources().getCo‌​lor(R.color.your_color‌​), PorterDuff.Mode.SRC_ATOP);

答案 1 :(得分:2)

虽然使用样式是一个好主意,但如果你想以编程方式分配颜色,它并没有提供太大的灵活性我建议:

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

答案 2 :(得分:0)

你需要像这样叫你的搜索栏

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

其中YOUR_NEW_STYLE将定义您想要的Seekbar的颜色。

答案 3 :(得分:0)

试试这个:

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

答案 4 :(得分:0)

您可以像这样通过编程方式更改搜寻栏的拇指和进度颜色:

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

答案 5 :(得分:0)

您可以通过代码轻松更改它,

例如:

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

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

希望将来对某人有帮助。

答案 6 :(得分:0)

多一点桃花般的答案

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

答案 7 :(得分:-1)

    //seekBar.setBackgroundColor(Color.DKGRAY);
    //seekBar.setDrawingCacheBackgroundColor(Color.DKGRAY);

Android SDK中的视图很少(ProgressBar是另一个示例),您必须使用图形颜色过滤器更改颜色,而不是更改背景/前景源颜色。

查找.setColorFilter()方法,使用一些PorterDuff过滤器为您提供源颜色,例如.Mode.MULTIPLY(取决于您最喜欢的过滤模式),然后就可以了。

示例:

seekBar.setColorFilter(new PorterDuffColorFilter(srcColor,PorterDuff.Mode.MULTIPLY));