I selettori dell'ora consentono agli utenti di selezionare un'ora. Puoi
utilizza gli elementi componibili TimePicker
e TimeInput
per implementare un intervallo
selettore nella tua app.
Tipi
Esistono due tipi di selettori dell'ora:
- Quadrante: consente agli utenti di impostare un'ora spostando una manopola su un quadrante.
- Inserimento: consente agli utenti di impostare un orario utilizzando la tastiera.
L'immagine seguente mostra un esempio di selettore dell'ora sul quadrante a sinistra e un selettore dell'ora di immissione a destra:

API surface
Per implementare un selettore di data e ora, utilizza TimePicker
o TimeInput
componibile:
TimePicker
: implementa un selettore dell'ora del quadrante.TimeInput
: implementa un selettore di data e ora di input.
Stato
Sia per TimePicker
che per TimeInput
, devi anche passare un
TimePickerState
. In questo modo puoi impostare l'ora selezionata predefinita visualizzata nel selettore. Acquisisce anche l'ora selezionata dall'utente utilizzando
selettore.
Finestra di dialogo
I selettori dell'ora vengono visualizzati nelle finestre di dialogo. Gli esempi in questa guida non utilizzano finestre di dialogo. Per esempi che utilizzano le finestre di dialogo, consulta la guida Finestre di dialogo per i selettori temporali.
Selettore dell'ora sul quadrante
Questo snippet illustra come implementare un selettore di base per l'ora di chiamata.
@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") } } }
Considera quanto segue in questo snippet:
Calendar.getInstance()
inizializzaTimePickerState
con lo stato attuale nel tempo.- Questo esempio utilizza
java.util.Calendar
. Abilita la rimozione del codice non necessario dalle API Java 8 e versioni successive nel tuo progetto per utilizzare alternativamentejava.time.LocalTime
su tutte le versioni di Android.
- Questo esempio utilizza
- Il componibile
TimePicker
mostra il selettore dell'ora e utilizzatimePickerState
come parametro. - L'implementazione include due pulsanti: uno per confermare la selezione e un'altra per chiudere il selettore.
Questa implementazione è visualizzata come segue:

Selettore ora di input
Questo snippet mostra come implementare un selettore dell'ora di stile di immissione di base.
@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") } } }
Punti chiave da notare in questa implementazione:
- La struttura è essenzialmente la stessa del selettore dell'ora del quadrante, con la differenza principale che è l'utilizzo di
TimeInput
anzichéTimePicker
. - Il parametro
is24Hour
pertimePickerState
è impostato esplicitamente sutrue
. Per impostazione predefinita, questo valore èfalse
.
Questa implementazione è visualizzata come segue:

Utilizza lo stato
Per utilizzare l'ora selezionata dall'utente in un selettore dell'ora, passa il valore TimePickerState
appropriato alla funzione onConfirm
. Partner principale
componibile può quindi accedere al tempo selezionato tramite TimePickerState.hour
e
TimePickerState.minute
.
Il seguente snippet mostra come eseguire questa operazione:
@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") } } }
A questo punto si potrebbe chiamare il componibile:
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.")
}
Per ulteriori dettagli, consulta l'implementazione completa negli snippet Google Cloud.