【问题标题】:Set Custom values to seek Bar设置自定义值以寻求 Bar
【发布时间】:2013-10-15 14:02:06
【问题描述】:

我想从基数 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) {}

    });

【问题讨论】:

  • 当前正在发生什么...
  • 首先是 1 然后是 5 然后是 5 ,然后是 7

标签: android increment seekbar


【解决方案1】:

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

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

【讨论】:

  • 正如你所说我使用它,它只增加一个,不要得到,m 使用 setleft(0) 和最大值是 8,现在是 sb1.incrementProgressBy(2),并且正在进行增加进度通过 2 ,但没有得到我需要的值
【解决方案2】:

要以增量移动您的 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);
  }
}

【讨论】:

    猜你喜欢
    • 2018-12-18
    • 2021-09-27
    • 2012-07-15
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 2020-08-03
    相关资源
    最近更新 更多