Android ProgressBar.setProgressDrawable 只能工作一次吗?

标签 android seekbar

在颜色选择器中,我有 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/

相关文章:

java - 如何从 Android 中每个动态创建的 EditText 获取数据?

Android,对话框中的SeekBar

android - Phonegap - 忽略 Android 上的字体大小显示设置

安卓 GPS 供应商

android - Android 上的 Flutter Cloud Firestore 崩溃 - 空对象引用上的 Mutable Document.getKey()

android - 如何更新 SeekBar 不触发 OnSeekBarChangeListener?

android - SeekBar 和 ListView 回收问题

java.lang.RuntimeException : Unable to start activity: com. google.android.apps.messaging.ui.conversationlist.ShareIntentActivity - 找不到资源

java - 禁用时如何使搜索栏变灰?

android - 使用 SeekBar 和 setProgress 不会改变 seekBar 的位置