Сбой Jetpack Compose RangeSlider для дискретных значенийAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Сбой Jetpack Compose RangeSlider для дискретных значений

Сообщение Anonymous »

Я пытаюсь использовать RangeSlider, чтобы иметь возможность выбирать дискретные значения. Текущий набор данных, который я использую, взят из нашего бэкэнда со значениями в диапазоне 15..50. В основном это работает, за исключением того, что два значения на ползунке имеют очень точные десятичные знаки, и, похоже, это вызывает сбой, когда обе конечные точки установлены на одно из этих значений.
Вот текущий код:

Код: Выделить всё

// range is a value from the backend which can be different types, when it is a number Gson deserializes it as a double
val inputRange = (range.minValue as Double).toFloat()..(range.maxValue as Double).toFloat()

val sliderState = remember {
RangeSliderState(
activeRangeStart = inputRange.start,
activeRangeEnd = inputRange.endInclusive,
steps = (inputRange.endInclusive - inputRange.start).toInt() - 1,
valueRange =  inputRange,
onValueChangeFinished = {}
)
}

val startInteractionSource = remember {
MutableInteractionSource()
}
val endInteractionSource = remember {
MutableInteractionSource()
}

androidx.compose.material3.RangeSlider(
state = sliderState,
startInteractionSource = startInteractionSource,
endInteractionSource = endInteractionSource,
modifier = Modifier
.padding(horizontal = 16.dp)
.padding(bottom = 16.dp),
startThumb = {
Label(
label = {
PlainTooltip {
Text(
text = it.activeRangeStart.toString(),
modifier = Modifier.padding(horizontal = 4.dp),
textAlign = TextAlign.Center
)
}
},
interactionSource = startInteractionSource,
isPersistent = true
) {
SliderDefaults.Thumb(interactionSource = startInteractionSource)
}
},
endThumb = {
Label(
label = {
PlainTooltip {
Text(
text = sliderState.activeRangeEnd.toString(),
modifier = Modifier.padding(horizontal = 4.dp),
textAlign = TextAlign.Center
)
}
},
interactionSource = endInteractionSource,
isPersistent = true
) {
SliderDefaults.Thumb(interactionSource = endInteractionSource)
}
}
)
Большинство точек на ползунке подходят и могут быть представлены целыми числами.
Две точки не являются целыми числами.
Когда оба больших пальца оказываются на одном из нецелых чисел, происходит сбой

Код: Выделить всё

java.lang.IllegalArgumentException: start(673.12866) must be 

Подробнее здесь: [url]https://stackoverflow.com/questions/78669151/jetpack-compose-rangeslider-crash-for-discrete-values[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»