0

我试图获取 SeekBar 的值,但它无法正常工作。这是代码:

            sb=(SeekBar)findViewById(R.id.seekBar1);
            sb.setMax(100);
            sb.setProgress(20);
            sb.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() 
            {

                public void onStopTrackingTouch(SeekBar arg0) 
                {


                }

                public void onStartTrackingTouch(SeekBar arg0) {


                }

                public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) 
                {
                    sb.setMax(100);
                    ShakeSilent.this.setTitle((sb.getMax()/sb.getProgress())*100);
                }
            });

谁能给我一个合理的理由?

4

2 回答 2

0

例如 100 / 50 等于 0.5,但是因为两个值都是 int,result 也转换为 int,所以 0.5 转换为 int 为 0,而 0 * 100 为 0。

你需要把它加倍:

ShakeSilent.this.setTitle((sb.getMax()/(double)sb.getProgress())*100);

于 2012-11-05T14:02:53.737 回答
0

我应该在方法中使用 arg0 而不是 sb:

ShakeSilent.this.setTitle((((float)arg0.getMax()/(float)arg0.getProgress()))*100);
于 2016-07-27T14:24:47.037 回答