Search code examples
android-jetpack-composerangeslider

RangeSlider fills all available width in Jetpack Compose


When I am trying to put some composable after RangeSlider, RangeSlider fills all width. For example:

Row {
    Text(text = "Test1")
    var range by remember { mutableStateOf(-20f..20f) }
    RangeSlider(
        values = range, onValueChange = {
            range = it
        },
        colors = SliderDefaults.colors(
            thumbColor = MaterialTheme.colorScheme.onSecondaryContainer,
            activeTrackColor = MaterialTheme.colorScheme.onSecondaryContainer
        ),
        valueRange = -50f..50f
    )
    Text(text = "Test2")
}

In this case Text with Test2 is invisible. When I am trying to force RangeSlider to be with some width, second slider is out of track. Also, Modifier.weigth() does not work.


Solution

  • Using another Layout that wraps RangeSlider solves the issue. Don't know why RangeSlider does not abide Modifier.weigth()

       Row {
            Text(text = "Test1")
            var range by remember { mutableStateOf(-20f..20f) }
            Row(
                modifier= Modifier.weight(1f),
                ){
                RangeSlider(
                    values = range, onValueChange = {
                        range = it
                    },
                    valueRange = -50f..50f
                )
            }
            Text(text = "Test2")
        }