1

我想从基数 3 开始我的 seek baar 并增加 2,最大值为 9 如何设置,我需要 3、5、7、9、11。我的代码是

它没有按我的意愿工作,请帮忙

SeekBar sb1 = (SeekBar)findViewById(R.id.sBtaxitype);

    sb1.setMax(11);
    sb1.setLeft(3);
    sb1.incrementProgressBy(2);
    sb1.setProgress(0); // Set it to zero so it will start at the left-most edge
    sb1.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
             if (progress < 3) {
                 progress = 3;
                 progress = progress + 2;
             } else {
                 progress = progress + 2; // Add the minimum value (10)
             }

            TextView text = (TextView)findViewById(R.id.tvTaxitype);
            text.setText(Integer.toString(progress));

        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {}

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {}

    });
4

2 回答 2

1

setLeft()是为了定位。ASeekBar始终以值 0 开始并上升到最大值(默认为 100,通过 覆盖setMax())。

要获得 3-11 的范围,请调用setMax(8),然后将 3 添加到getProgress()检索当前值时的结果中。

于 2013-10-15T14:06:43.557 回答
0

要以增量移动您的 SeekBar,您需要测试fromUser并将进度设置为您想要的值。在此示例中,进度指示器将在您移动时“捕捉”到最接近的 10。

@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)
{
  // round progress up or down to the nearest 10
  int roundedProgress = (int) (Math.rint((double) progress / 10) * 10);
  if (fromUser)
  {
    seekBar.setProgress(roundedProgress);
  }
}
于 2014-09-15T22:34:58.743 回答