Über die Zeitauswahl können Nutzer eine Zeit auswählen. Sie können
die zusammensetzbaren Funktionen TimePicker
und TimeInput
verwenden, um eine Uhrzeit zu implementieren
in Ihrer App auswählen.
Typen
Es gibt zwei Arten der Zeitauswahl:
- Wählen: Damit können Nutzer eine Uhrzeit festlegen, indem sie einen Ziehpunkt um ein Zifferblatt bewegen.
- Eingabe: Damit können Nutzer eine Uhrzeit über die Tastatur festlegen.
In der folgenden Abbildung sehen Sie links ein Beispiel für eine Einwahlzeitauswahl. eine Eingabezeitauswahl rechts:
![Ein Wählrad und eine Auswahl für die Eingabezeit](https://developer.android.google.cn/static/develop/ui/compose/images/components/timepickers.png?hl=de)
API-Oberfläche
Verwende zum Implementieren einer Zeitauswahl entweder TimePicker
oder TimeInput
zusammensetzbar:
TimePicker
: Implementiert eine Einwahlzeitauswahl.TimeInput
: Implementiert eine Eingabezeitauswahl.
Bundesland
Für TimePicker
und TimeInput
müssen Sie außerdem eine
TimePickerState
Hier können Sie die standardmäßig ausgewählte Zeit festlegen, die angezeigt wird.
in der Auswahl. Außerdem wird die Zeit erfasst, die der Nutzer
Auswahl.
Dialogfeld
Die Zeitauswahl wird in Dialogfeldern angezeigt. In den Beispielen in diesem Leitfaden werden keine Dialogfelder verwendet. Beispiele, in denen Dialogfelder verwendet werden, finden Sie im Leitfaden Dialogfelder für die Zeitauswahl.
Wahlzeitauswahl
Dieses Snippet veranschaulicht, wie eine einfache Einwahlzeitauswahl implementiert wird.
@Composable fun DialExample( onConfirm: () -> Unit, onDismiss: () -> Unit, ) { val currentTime = Calendar.getInstance() val timePickerState = rememberTimePickerState( initialHour = currentTime.get(Calendar.HOUR_OF_DAY), initialMinute = currentTime.get(Calendar.MINUTE), is24Hour = true, ) Column { TimePicker( state = timePickerState, ) Button(onClick = onDismiss) { Text("Dismiss picker") } Button(onClick = onConfirm) { Text("Confirm selection") } } }
Betrachten Sie in diesem Snippet Folgendes:
Calendar.getInstance()
initialisiert denTimePickerState
mit dem aktuellen .- In diesem Beispiel wird
java.util.Calendar
verwendet. Java aktivieren mehr als 8 API-Degugaring in Ihrem Projekt, um alternativjava.time.LocalTime
auf allen Android-Versionen.
- In diesem Beispiel wird
- Die zusammensetzbare Funktion
TimePicker
zeigt die Zeitauswahl an undtimePickerState
als Parameter verwenden. - Die Implementierung umfasst zwei Schaltflächen: eine zur Bestätigung der Auswahl und um die Auswahl zu schließen.
Diese Implementierung sieht so aus:
![Eine Einwahlzeitauswahl. Der Nutzer kann über den Ring eine Uhrzeit auswählen.](https://developer.android.google.cn/static/develop/ui/compose/images/components/timepicker-dial.png?hl=de)
Eingabezeitauswahl
Dieses Snippet veranschaulicht, wie eine einfache Eingabestil-Zeitauswahl implementiert wird.
@Composable fun InputExample( onConfirm: () -> Unit, onDismiss: () -> Unit, ) { val currentTime = Calendar.getInstance() val timePickerState = rememberTimePickerState( initialHour = currentTime.get(Calendar.HOUR_OF_DAY), initialMinute = currentTime.get(Calendar.MINUTE), is24Hour = true, ) Column { TimeInput( state = timePickerState, ) Button(onClick = onDismiss) { Text("Dismiss picker") } Button(onClick = onConfirm) { Text("Confirm selection") } } }
Wichtige Punkte, die bei dieser Implementierung zu beachten sind:
- Die Struktur ist im Wesentlichen die gleiche wie die Wahlzeitauswahl, nur der Hauptteil
Unterschied besteht in der Verwendung von
TimeInput
stattTimePicker
. - Der Parameter
is24Hour
fürtimePickerState
ist explizit auftrue
festgelegt. Der Standardwert istfalse
.
Diese Implementierung sieht so aus:
![Eine Eingabezeitauswahl. Der Nutzer kann in Textfeldern eine Uhrzeit eingeben.](https://developer.android.google.cn/static/develop/ui/compose/images/components/timepicker-input.png?hl=de)
Status verwenden
Übergeben Sie den Parameter
TimePickerState
zu Ihrer onConfirm
-Funktion hinzufügen. Das übergeordnete Element
zusammensetzbare Funktion kann dann über TimePickerState.hour
auf die ausgewählte Zeit zugreifen und
TimePickerState.minute
.
Das folgende Snippet veranschaulicht, wie dies funktioniert:
@Composable fun DialUseStateExample( onConfirm: (TimePickerState) -> Unit, onDismiss: () -> Unit, ) { val currentTime = Calendar.getInstance() val timePickerState = rememberTimePickerState( initialHour = currentTime.get(Calendar.HOUR_OF_DAY), initialMinute = currentTime.get(Calendar.MINUTE), is24Hour = true, ) Column { TimePicker( state = timePickerState, ) Button(onClick = onDismiss) { Text("Dismiss picker") } Button(onClick = { onConfirm(timePickerState) }) { Text("Confirm selection") } } }
Sie könnten die zusammensetzbare Funktion dann wie folgt aufrufen:
var selectedTime: TimePickerState? by remember { mutableStateOf(null) }
// ...
DialUseStateExample(
onDismiss = {
showDialExample = false
},
onConfirm = {
time ->
selectedTime = time
showDialExample = false
},
)
// ...
if (selectedTime != null) {
val cal = Calendar.getInstance()
cal.set(Calendar.HOUR_OF_DAY, selectedTime!!.hour)
cal.set(Calendar.MINUTE, selectedTime!!.minute)
cal.isLenient = false
Text("Selected time = ${formatter.format(cal.time)}")
} else {
Text("No time selected.")
}
Weitere Informationen finden Sie im Abschnitt zur vollständigen Implementierung in den Snippets. App.