Android编写:自定义滑块滑块和刻度

f0brbegy  于 2023-01-11  发布在  Android
关注(0)|答案(1)|浏览(261)

我想定制Slider discrete component
滑块(kotlin.Float、kotlin.Function1、androidx.compose.ui、修饰符、kotlin、布尔值、kotlin、范围、闭合浮点范围、kotlin、整数、kotlin、函数0、androidx.compose.material3、滑块颜色、androidx.compose.foundation.interaction.可变交互源)。
我试过这样的方法:

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)
        )
    }
)

但结果并不是预期的那样。"UI"很好,但拇指没有以勾号为中心。我可以在"检查器工具"中看到两个框。我的新拇指和另一个更大,似乎是带有圆圈的"默认框"。
怎样才能使我的自定义拇指"居中",或者至少指定与刻度对齐的位置?
另一个问题是,如何处理滴答声?我找不到定制它的方法。

7y4bm7vi

7y4bm7vi1#

目前,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)
            )
    }
)

相关问题