Search code examples
androidandroid-seekbarandroid-slider

Changing step values in seekbar?


I have a seekbar, while moving it I want to change values from 0 to 200. I have a TextView, where I display those values while moving the seekbar. But I don't want to have every value from that interval(0,1,2,3,4,5...), but to have 10, 20, 30...so on. So when I move the seekbar, I want to display 10,20,30,40....to 200. Can somebody give me a hint or an example how to do this?


Solution

  • Try below code

    SeekBar seekBar = (SeekBar)layout.findViewById(R.id.seekbar);
    seekBar.setProgress(0);
    seekBar.incrementProgressBy(10);
    seekBar.setMax(200);
    TextView seekBarValue = (TextView)layout.findViewById(R.id.seekbarvalue);
    seekBarValue.setText(tvRadius.getText().toString().trim());
    
    seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener(){
    
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            progress = progress / 10;
            progress = progress * 10;
            seekBarValue.setText(String.valueOf(progress));
        }
    
        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
    
        }
    
        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
    
        }
    });
    

    setProgress(int) is used to set starting value of the seek bar

    setMax(int) is used to set maximum value of seek bar

    If you want to set boundaries of the seekbar then you can check the progressbar value in the onProgressChanged method. If the progress is less than or greater than the boundary then you can set the progress to the boundary you defined.