views:

440

answers:

1

In a color picker, I have 3 SeekBars for Hue, Saturation, and Value. Calling setProgressDrawable on these SeekBars only works once -- at initialization from onCreate. When the user updates the Hue SeekBar, I want to call setProgressDrawable for the Saturation and Value SeekBars, to show the user their color choices for the new Hue.

But all calls to setProgressDrawable (after the initial ones from onCreate) cause the SeekBar to be blanked.

How can I update the background gradient of my SeekBars based upon user input?

+2  A: 

Hey I got the solutions to this, you first have to set the drawable to the ProgressBar by calling setProgresssDrawable(drawable) and only then set the value and not vice versa. That'll work.

To set a progress drawable:

Use a drawable xml file like this one:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"&gt;
<item android:id="@android:id/background">
    <shape>
        <corners android:radius="5dip" />
        <gradient android:startColor="#00CCCC"
            android:centerColor="#00CCCC" android:centerY="0.75"
            android:endColor="#00CCCC" android:angle="270" />
    </shape>
</item>
<item android:id="@android:id/secondaryProgress">
    <clip>
        <shape>
            <corners android:radius="5dip" />
            <gradient android:startColor="#00CCCC"
                android:centerColor="#00CCCC" android:centerY="0.75"
                android:endColor="#00CCCC" android:angle="270" />
        </shape>
    </clip>
</item>
<item android:id="@android:id/progress">
    <clip>
        <shape>
            <corners android:radius="5dip" />
            <gradient android:startColor="#00CCCC" android:centerColor="#00CCCC"
                android:centerY="0.75" android:endColor="#00CCCC" android:angle="270" />
        </shape>
    </clip>
</item>

save this into your /drawable folder and use it in the setProgressDrawable(drawable) function

Gooner
How can I set the color of the gradient of the Progress Drawable?
michael
I have answered your question above!
Gooner