2014-12-12 3 views
0

Я попытался найти решение этой проблемы, но ничего, что я пытаюсь, кажется, дает эффект, который я хочу.Как изменить цвет прогресса SeekBar динамически во время выполнения?

В моем приложении у меня есть SeekBar, что я хочу изменить цвет в соответствии с текущим воспроизводимым файлом (пользователь может устанавливать разные цвета для разных файлов). Моя проблема заключается в том, что я не могу найти способ настройки хода и цвета большого пальца во время выполнения, поскольку я не знаю, какие цвета будут использоваться до тех пор, пока приложение не запустится, поэтому я не могу создать XML-чертежи для каждого цвета.

Если кто-то знает способ изменения цвета хода и большого пальца SeekBar во время выполнения, я бы очень благодарен им за помощь.

Thanks, Corey B

+1

нравится это? http://stackoverflow.com/q/9837843/2001247 – ElDuderino

+0

Привет, я пробовал то, что было сказано в этой ссылке, но, к сожалению, это не сработало. Однако после многих проб и ошибок мне удалось найти способ изменить цвет стрелки. Спасибо в любом случае за вашу помощь, его очень ценят. Кори Б :) – Fishingfon

ответ

0

Для тех, у кого такая же проблема. Из выше кода я понимаю, что вы хотите изменить цвет SeekBar У меня была такая же проблема, после многого поиска я сделал свой собственный метод.

public void changeSeekbarColor(SeekBar s,int colorp,int colors,int color b) 
{ 
    PorterDuff.Mode mMode = PorterDuff.Mode.SRC_ATOP; 

    LayerDrawable layerDrawable = (LayerDrawable) s.getProgressDrawable(); 
    Drawable progress = (Drawable) layerDrawable.findDrawableByLayerId(android.R.id.progress); 
    Drawable secondary = (Drawable) layerDrawable.findDrawableByLayerId(android.R.id.secondaryProgress); 
    Drawable background = (Drawable) layerDrawable.findDrawableByLayerId(android.R.id.background); 
    Drawable th = s.getThumb(); 

    // Setting colors 
    progress.setColorFilter(colorp,mMode); 
    secondary.setColorFilter(colors,mMode); 
    background.setColorFilter(colorb, mMode); 
    th.setColorFilter(colorp,mMode); 

    // Applying Tinted Drawables 
    layerDrawable.setDrawableByLayerId(android.R.id.progress, progress); 

    layerDrawable.setDrawableByLayerId(android.R.id.secondaryProgress, secondary); 

    layerDrawable.setDrawableByLayerId(android.R.id.background, background); 

}