在一个颜色选择器中,我有3个SeekBars用于色相,饱和度和值。在这些SeekBar上调用setProgressDrawable只能工作一次-从onCreate初始化时。当用户更新色相SeekBar时,我想为饱和度和值SeekBars调用setProgressDrawable,以向用户显示他们对新色相的颜色选择。

但是所有对setProgressDrawable的调用(在onCreate中的初始调用之后)都会导致SeekBar被清空。

如何根据用户输入更新SeekBars的背景渐变?

最佳答案

我发现当调用setprogressdrawable时drawable不知道它的大小。最初设置时,它确实知道它的大小。这意味着在搜索栏中设置了一个新的可绘制对象,但是可绘制对象的大小为0,您将看不到任何东西。

解决方案是首先获取当前可绘制对象的边界,然后设置新的可绘制对象,最后再次设置边界:

Rect bounds = mySeekBar.getProgressDrawable().getBounds();
mySeekBar.setProgressDrawable(newSeekBarBackground);
mySeekBar.getProgressDrawable().setBounds(bounds);

关于Android ProgressBar.setProgressDrawable仅可使用一次?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2805866/

10-10 08:35