Android Seekbar最大进度!=最大值

时间:2014-04-22 19:02:39

标签: android seekbar

我想在Seekbar中设置一个与最大值不同的最大进度值。

例如,max将是100和最大进度50,因此进度滑块只能拖动到中间。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:1)

您可以尝试以下

int seekBarMaxValue = 100;
int seekBarDraggableMaxValue = 50;

seekBar.setMax(seekBarMaxValue );

seekBar.setOnSeekBarChangeListener(new OnSeekBarChangetListener() {
  public void onProgressChanged (SeekBar seekBar, int progress, boolean fromUser) {
     seekBar.setProgress(progress > seekBarDraggableMaxValue ? seekBarDraggableMaxValue : progress);
  }
});

希望它有所帮助。

答案 1 :(得分:0)

好像你只想要三个数字(例如0; 50; 100);只是假装每个数字代表另一个数字或用公约数乘以进度:

实施例

  • 0 = 0或(0 * 50)
  • 1 = 50或(1 * 50)
  • 2 = 100或(2 * 50)

    int int_actual_number = 0;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    ...
    seek_sample.setMax(2);
    seek_sample.setProgress(0);
    seek_sample.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
    
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            int_actual_number = progress * 50;
    
        }
    
        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
    
        }
    
        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
    
        }
    
    });
    

您可以使用不同的公约数和数量来测试此方法以满足您的需要。