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);
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().getColor(R.color.your_color), PorterDuff.Mode.SRC_ATOP);
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);
Vous devez appeler vous seekbar comme ça
SeekBar newSeek = new SeekBar(this, null, R.style.YOUR_NEW_STYLE);
où YOUR_NEW_STYLE
définira les couleurs de la Seekbar
souhaitée.
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);
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.
essaye ça :
seekBar.getProgressDrawable().setColorFilter(getResources().getColor(R.color.mcolor), PorterDuff.Mode.MULTIPLY);