<分区>
我在 fragment 中使用 Seekbar
,需要将 Seekbar
移动到不同的位置。但是,setProgress(xxx)
不起作用。
如何以编程方式为 Seekbar
触发此方法:public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)
?手动移动 Seekbar
效果很好。
<分区>
我在 fragment 中使用 Seekbar
,需要将 Seekbar
移动到不同的位置。但是,setProgress(xxx)
不起作用。
如何以编程方式为 Seekbar
触发此方法:public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)
?手动移动 Seekbar
效果很好。
最佳答案
这是 ProgressBar 中的错误!
如果再次传递相同的值,setProgress(...)
似乎不会触发 drawable
的更新。但它也不会在 setMax 期间触发。所以缺少更新。
为了解决这个问题,我只是在每次更新之前执行一个bar.setProgress(0)
...这只是一个解决方法,但它对我来说如预期的那样有效:
bar.setProgress(0); // call these two methods before setting progress.
bar.setMax(20);
bar.setProgress(20);
第二个选项。
mSeekBar.post(new Runnable() {
@Override
public void run() {
mSeekBar.setProgress(percentOfFullVolume);
}
});
它也可能对某些人有用。
尝试先设置最大值再设置进度。
关于android - 使用 SeekBar 和 setProgress 不会改变 seekBar 的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17313197/
相关文章:
java - ViewPager内部 fragment 返回父 fragment 时不显示
java - Android 中的 slider 控件... SeekBar 真的是我最好/唯一的选择吗?
android - 如何在不影响 Android 边框的情况下仅更改 ProgressDialog 的背景颜色?
android - fragment 和 onConfigurationChanged
android - 如何动态创建 fragment 寻呼机适配器
android - 删除拇指并为禁用的搜索栏设置 progressTint
android - 在 android 中来自 XMPP 的联系人图像
android - Meteor+Cordova - Android 上的 "deviceready has not fired"