首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SeekBar和setProgress不会改变seekBar的位置

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

Stack Overflow用户
提问于 2013-06-26 14:41:43
回答 6查看 19.6K关注 0票数 11

我在片段中使用Seekbar,需要将Seekbar移动到不同的位置。但是,setProgress(xxx)不起作用。

如何以编程方式为Seekbarpublic void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)触发此方法?手动移动Seekbar可以很好地工作。

EN

回答 6

Stack Overflow用户

发布于 2015-02-10 21:41:16

这是ProgressBar中的一个错误!

如果再次传递相同的值,则setProgress(...)似乎不会触发drawable上的更新。但它也不会在setMax期间触发。所以更新丢失了。

为了解决这个问题,我只是在每次更新之前执行一次bar.setProgress(0) ...这只是一种变通方法,但它对我来说是可以正常工作的:

代码语言:javascript
复制
bar.setProgress(0); // call these two methods before setting progress.
bar.setMax(20);
bar.setProgress(20);

第二种选择。

代码语言:javascript
复制
mSeekBar.post(new Runnable() {
        @Override
        public void run() {
            mSeekBar.setProgress(percentOfFullVolume);
        }
    });

它也可能对某些人有效。

先尝试设置最大值,然后再设置进度。

票数 18
EN

Stack Overflow用户

发布于 2015-01-14 11:00:35

我添加了这个答案,因为这可以在未来帮助别人。

在我的例子中,我也认为setProgress没有正常工作,但这是我的错误。

代码语言:javascript
复制
increaseIncomeSeekBar.setProgress(progress);
increaseIncomeSeekBar.setMax(maxProgress);

表示信息进度,maxProgress等于2000和12000。但在显示SeekBar时,进度似乎为0,因此无法正常工作。

你必须意识到这一点,当你知道这一点时,这是非常合逻辑的:

  • first SeekBar max = 100。
  • 当您设置进度>最大时,则进度=最大。
  • ,因此您需要在设置进度值之前设置最大值。
票数 4
EN

Stack Overflow用户

发布于 2017-11-26 00:08:15

我在这个话题上添加了一个评论,因为它发生在我身上,我花了几个小时才弄清楚问题是什么。该错误仍处于活动状态,setProgress()方法有时无法正常工作。

我有一个MainActivity,它提交并替换片段,并在每个片段的捆绑包中传输SeekBar值。用户更改Seekbar的值,并将其进度放入中。然后,当用户切换分片时,新的分片会得到SeekBar进程。

以这种方式传输它非常好,而且我在第二个片段中的进度变量上总是有正确的值。使用setProgress(theProgressValueTransmitted)方法时出现问题。这只在我第一次替换第一个片段时设置了我的SeekBar进度。在那之后,它永远不会改变进步的价值是否仍然是正确的。

我使用:

代码语言:javascript
复制
int seekBarProgress;
Bundle bundle = this.getArguments();
    if (bundle != null) {
        seekBarProgress = bundle.getInt("seekBarProgress");
    mySeekBar.post(new Runnable() {
                @Override
                public void run() {
                    eventListTimeSeekBar.setProgress(seekBarProgress);

                }
            });
    }

这是我唯一能做到这一点的方法。希望它能帮助有同样问题的人。这篇文章已经4年多了,我甚至不明白为什么这个bug还会存在,因为它已经被报道了。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17313197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档