AutoCenteringPickerGroup
@Composable
fun AutoCenteringPickerGroup() {
val pickerGroupState = rememberPickerGroupState()
val pickerStateHour = rememberPickerState(initialNumberOfOptions = 24)
val pickerStateMinute = rememberPickerState(initialNumberOfOptions = 60)
val pickerStateSeconds = rememberPickerState(initialNumberOfOptions = 60)
val pickerStateMilliSeconds = rememberPickerState(initialNumberOfOptions = 1000)
Column(
modifier = Modifier.fillMaxWidth(),
verticalArrangement = Arrangement.Center,
horizontalAlignment = Alignment.CenterHorizontally,
) {
val headingText = mapOf(0 to "Hours", 1 to "Minutes", 2 to "Seconds", 3 to "Milli")
Spacer(modifier = Modifier.size(30.dp))
Text(text = headingText[pickerGroupState.selectedIndex]!!)
Spacer(modifier = Modifier.size(10.dp))
PickerGroup(
PickerGroupItem(
pickerState = pickerStateHour,
option = { optionIndex, _ -> Text(text = "%02d".format(optionIndex)) },
modifier = Modifier.size(80.dp, 100.dp),
),
PickerGroupItem(
pickerState = pickerStateMinute,
option = { optionIndex, _ -> Text(text = "%02d".format(optionIndex)) },
modifier = Modifier.size(80.dp, 100.dp),
),
PickerGroupItem(
pickerState = pickerStateSeconds,
option = { optionIndex, _ -> Text(text = "%02d".format(optionIndex)) },
modifier = Modifier.size(80.dp, 100.dp),
),
PickerGroupItem(
pickerState = pickerStateMilliSeconds,
option = { optionIndex, _ -> Text(text = "%03d".format(optionIndex)) },
modifier = Modifier.size(80.dp, 100.dp),
),
pickerGroupState = pickerGroupState,
autoCenter = true,
)
}
}
PickerGroup24Hours
@Composable
fun PickerGroup24Hours() {
val pickerGroupState = rememberPickerGroupState()
val pickerStateHour = rememberPickerState(initialNumberOfOptions = 24)
val pickerStateMinute = rememberPickerState(initialNumberOfOptions = 60)
Column(
modifier = Modifier.fillMaxWidth(),
verticalArrangement = Arrangement.Center,
horizontalAlignment = Alignment.CenterHorizontally,
) {
Spacer(modifier = Modifier.size(30.dp))
Text(text = if (pickerGroupState.selectedIndex == 0) "Hours" else "Minutes")
Spacer(modifier = Modifier.size(10.dp))
PickerGroup(
PickerGroupItem(
pickerState = pickerStateHour,
option = { optionIndex, _ -> Text(text = "%02d".format(optionIndex)) },
modifier = Modifier.size(80.dp, 100.dp),
),
PickerGroupItem(
pickerState = pickerStateMinute,
option = { optionIndex, _ -> Text(text = "%02d".format(optionIndex)) },
modifier = Modifier.size(80.dp, 100.dp),
),
pickerGroupState = pickerGroupState,
autoCenter = false,
)
}
}