将自定义值设置为搜索栏

时间:2013-10-15 14:02:06

标签: android increment seekbar

我想从基地3开始我的寻找baar并且增加2并且max是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) {}

    });

2 个答案:

答案 0 :(得分:1)

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

要获得3-11范围,请致电setMax(8),然后在检索当前值时为getProgress()的结果添加3。

答案 1 :(得分: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);
  }
}