Составление Android: настройка большого пальца и галочки слайдера

Я хотел бы настроить дискретный компонент Slider .

https://developer.android.com/reference/kotlin/androidx/compose/material3/package-summary#Slider(kotlin.Float,kotlin.Function1,androidx.compose.ui.Modifier,kotlin.Boolean,kotlin.ranges.ClosedFloatingPointRange,kotlin.Int,kotlin.Function0,androidx.compose.material3.SliderColors,androidx.compose.foundation.interaction.MutableInteractionSource).

Я пробовал что-то вроде:

      Slider(
    value = defaultLevel.toFloat(),
    onValueChange = onValueChange,
    valueRange = 0..10,
    modifier = Modifier.size(300.dp, 80.dp),
    steps = 4,
    enabled = true,
    colors = colors,
    thumb = {
        SliderDefaults.Thumb(
            interactionSource = interactionSource,
            colors = colors,
            modifier = Modifier
                .size(width = 10.dp, height = 50.dp)
                .indication(
                    interactionSource = interactionSource,
                    indication = rememberRipple(
                        bounded = false,
                        radius = 20.dp
                    )
                )
                .hoverable(interactionSource = interactionSource)
                .background(defaultColor, RectangleShape)
        )
    }
)

Но результат не тот, который ожидался. «Интерфейс» хорош, но большой палец не центрируется с галочкой. На самом деле я вижу два поля в «инструменте инспектора». Мой новый большой палец и еще один, который больше и кажется «стандартным» с кругом.

Как можно «центрировать» мой собственный большой палец или, по крайней мере, указать положение, которое нужно выровнять с галочкой?

Другой вопрос, как обращаться с клещом? Я не могу найти способ настроить его.

1 ответ

В настоящее времяThumbкажется, есть проблемы с выравниванием с использованием размера <20.dp.

Вы можете использовать:

      Slider(
//..,
    thumb = {
            SliderDefaults.Thumb(
                interactionSource = interactionSource,
                thumbSize = DpSize(20.dp, 50.dp)
            )
    }
)

или обходной путь, например:

      Slider(
//..,
    thumb = {
            SliderDefaults.Thumb(
                interactionSource = interactionSource,
                modifier = Modifier.offset(x=5.dp),
                thumbSize = DpSize(10.dp, 50.dp)
            )
    }
)

Другие вопросы по тегам