A full screen TimePicker with configurable columns that allows users to select a time.
TimePickerSample
@Composable
fun TimePickerSample() {
var showTimePicker by remember { mutableStateOf(true) }
var timePickerTime by remember { mutableStateOf(LocalTime.now()) }
if (showTimePicker) {
TimePicker(
onTimePicked = {
timePickerTime = it
showTimePicker = false
},
initialTime = timePickerTime, // Initialize with last picked time on reopen
)
} else {
Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) {
val formatter =
DateTimeFormatter.ofLocalizedTime(FormatStyle.SHORT)
.withLocale(LocalConfiguration.current.locales[0])
Button(
onClick = { showTimePicker = true },
label = { Text("Selected Time") },
secondaryLabel = { Text(timePickerTime.format(formatter)) },
icon = { Icon(imageVector = Icons.Filled.Edit, contentDescription = "Edit") },
)
}
}
}
TimePickerWith12HourClockSample
@Composable
fun TimePickerWith12HourClockSample() {
var showTimePicker by remember { mutableStateOf(true) }
var timePickerTime by remember { mutableStateOf(LocalTime.now()) }
if (showTimePicker) {
TimePicker(
onTimePicked = {
timePickerTime = it
showTimePicker = false
},
timePickerType = TimePickerType.HoursMinutesAmPm12H,
initialTime = timePickerTime, // Initialize with last picked time on reopen
)
} else {
Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) {
val formatter = DateTimeFormatter.ofPattern("hh:mm a")
Button(
onClick = { showTimePicker = true },
label = { Text("Selected Time") },
secondaryLabel = { Text(timePickerTime.format(formatter)) },
icon = { Icon(imageVector = Icons.Filled.Edit, contentDescription = "Edit") },
)
}
}
}
TimePickerWithMinutesAndSecondsSample
@Composable
fun TimePickerWithMinutesAndSecondsSample() {
var showTimePicker by remember { mutableStateOf(true) }
var timePickerTime by remember { mutableStateOf(LocalTime.now()) }
if (showTimePicker) {
TimePicker(
onTimePicked = {
timePickerTime = it
showTimePicker = false
},
timePickerType = TimePickerType.MinutesSeconds,
initialTime = timePickerTime, // Initialize with last picked time on reopen
)
} else {
Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) {
val formatter = DateTimeFormatter.ofPattern("mm:ss")
Button(
onClick = { showTimePicker = true },
label = { Text("Selected Time") },
secondaryLabel = { Text(timePickerTime.format(formatter)) },
icon = { Icon(imageVector = Icons.Filled.Edit, contentDescription = "Edit") },
)
}
}
}
TimePickerWithSecondsSample
@Composable
fun TimePickerWithSecondsSample() {
var showTimePicker by remember { mutableStateOf(true) }
var timePickerTime by remember { mutableStateOf(LocalTime.now()) }
if (showTimePicker) {
TimePicker(
onTimePicked = {
timePickerTime = it
showTimePicker = false
},
timePickerType = TimePickerType.HoursMinutesSeconds24H,
initialTime = timePickerTime, // Initialize with last picked time on reopen
)
} else {
Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) {
val formatter = DateTimeFormatter.ofPattern("HH:mm:ss")
Button(
onClick = { showTimePicker = true },
label = { Text("Selected Time") },
secondaryLabel = { Text(timePickerTime.format(formatter)) },
icon = { Icon(imageVector = Icons.Filled.Edit, contentDescription = "Edit") },
)
}
}
}