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?
Asked
Active
Viewed 136 times
0
-
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 Answers
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