0

I have a discrete SeekBar that can take a value from 0 to 10. But I want to let the user select values from 1 to 9 only. How can I achieve this?

Kirill Kitten
  • 1,759
  • 1
  • 4
  • 5
  • Possible duplicate of [Discrete seekbar in Android app?](https://stackoverflow.com/questions/2614714/discrete-seekbar-in-android-app) – jrh Oct 13 '19 at 04:39

2 Answers2

0

You can programatically set max limit of seekbar after the user has given desired range like this:

seekbar.setMax(userInput);
Saif
  • 397
  • 1
  • 9
  • Thanks for the answer, but it doesn't resovle my question, because `max` property sets maximum value of `SeekBar`. In my case, it's 10, but I want to prevent users from setting this value, but let that value visible. – Kirill Kitten Oct 15 '19 at 09:03
0

To resolve this issue I've implemented custom OnSeekBarChangeListener:

binding.seekBar.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener {
            override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {
                when(progressValue) {
                    0 -> seekBar.progress = 1
                    10 -> seekBar.progress = 9
                }
            }
            override fun onStartTrackingTouch(seekBar: SeekBar?) {}
            override fun onStopTrackingTouch(seekBar: SeekBar?) {}
        })
Kirill Kitten
  • 1,759
  • 1
  • 4
  • 5