有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在安卓中更改SeekBar颜色?(以编程方式)

我做了一个均衡器来配合我的应用程序,但我不知道如何才能改变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);

共 (6) 个答案

  1. # 1 楼答案

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

    例如:

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

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

    希望它能对将来的人有所帮助

  2. # 2 楼答案

    要更改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>;十六,

    编辑

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

     seekBar.getProgressDrawable().setColorFilter(getResources().getCo‌​lor(R.color.your_color‌​), PorterDuff.Mode.SRC_ATOP);
    
  3. # 3 楼答案

    你需要这样称呼你seekbar

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

    其中YOUR_NEW_STYLE将定义所需Seekbar的颜色

  4. # 4 楼答案

    试试这个:

    seekBar.getProgressDrawable().setColorFilter(getResources().getColor(R.color.mcolor), PorterDuff.Mode.MULTIPLY);
    
  5. # 5 楼答案

    虽然使用样式是一个好主意,但它没有提供太多的灵活性,特别是如果您希望以编程方式指定颜色,我建议:

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

  6. # 6 楼答案

    您可以通过编程方式更改seekbar thumb和progress的颜色,如下所示:

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