web-dev-qa-db-fra.com

comment changer la couleur de SeekBar dans Android? (Par programme)

J'ai créé un égaliseur pour mon application, mais je ne sais pas comment changer le pouce et la couleur de progression de la barre de recherche. Il semble être rose par défaut et cela ne correspond pas à l'esthétique de mon application.

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

Pour changer la couleur de la variable Seekbar, créez un nouveau style dans style.xml

<style name="SeekBarColor"
  parent="Widget.AppCompat.SeekBar"> 
  <item name="colorAccent">@color/your_color</item> 
</style>

Enfin dans la mise en page:

<SeekBar
  Android:layout_width="match_parent"
  Android:layout_height="wrap_content"
  Android:theme="@style/SeekBarColor" />

Pour changer la couleur de progression Seekbar, utilisez-la dans Java Class.

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

Ces deux fonctionneront pour API> 16.

Modifier

Pour changer la couleur du pouce SeekBar par le code Java.

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

Bien que l’utilisation d’un style soit une bonne idée, elle ne fournit pas beaucoup de souplesse, en particulier si vous souhaitez attribuer les couleurs par programmation, je suggère:

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

2
Georges daou

Vous devez appeler vous seekbar comme ça

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

YOUR_NEW_STYLE définira les couleurs de la Seekbar souhaitée.

0
Anmol

Vous pouvez modifier le pouce seekbar et les couleurs progressives pour un programme comme ceci:

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

Vous pouvez facilement le changer via le code,

Par exemple:

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

ou

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

En espérant que cela sera utile pour quelqu'un à l'avenir.

0
Sachin Varma

essaye ça :

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