在颜色选择器中,我有 3 个用于色相、饱和度和值的 SeekBar。在这些 SeekBars 上调用 setProgressDrawable 只工作一次——在 onCreate 初始化时。当用户更新 Hue SeekBar 时,我想为 Saturation 和 Value SeekBars 调用 setProgressDrawable,以向用户显示他们对新 Hue 的颜色选择。
但所有对 setProgressDrawable 的调用(在 onCreate
的初始调用之后)都会导致 SeekBar 变为空白。
如何根据用户输入更新 SeekBar 的背景渐变?
最佳答案
我发现调用 setprogressdrawable 时,drawable 并不知道它的大小。最初设置时,它确实知道自己的大小。这意味着有一个新的 drawable 设置到 seekbar,但 drawable 的大小为 0,您将看不到任何东西。
解决方法是先获取当前drawable的bounds,然后设置新的drawable,最后再设置bounds:
Rect bounds = mySeekBar.getProgressDrawable().getBounds();
mySeekBar.setProgressDrawable(newSeekBarBackground);
mySeekBar.getProgressDrawable().setBounds(bounds);
关于Android ProgressBar.setProgressDrawable 只能工作一次吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2805866/