Ничто здесь не работает для меня, поэтому я пришел с немного другим решением.Я заметил, что все работает хорошо, пока я не попытаюсь изменить максимальное значение (вызов setMax с другим значением).
Мой код:
class FixedSeekBar : SeekBar {
constructor(context: Context) : super(context)
constructor(context: Context, attrs: AttributeSet) : super(context, attrs)
constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super(context, attrs, defStyleAttr)
companion object {
private const val PROGRESS_MAX = 1000000.toDouble()
}
private var mLastMaxValue: Int = 100
override fun setMax(max: Int) {
mLastMaxValue = max
super.setMax(PROGRESS_MAX.toInt())
}
fun setProgressFixed(progress: Int) {
setProgress((PROGRESS_MAX / mLastMaxValue * progress).toInt())
}
fun getProgressFixed(): Int {
return (getProgress() / PROGRESS_MAX * mLastMaxValue).toInt()
}
}
Это прекрасно работает для меня.Я могу вызвать setMax как обычно, и мне просто нужно заменить getProgress и setProgress на getProgressFixed и setProgressFixed .
Не переопределять setProgress и getProgress .Они вызываются внутри.
Мое решение не учитывается при setMin .Если вам это нужно, измените код соответствующим образом.