Saat seçiciler, kullanıcılara saat seçmeleri için bir yöntem sunar. Şunları yapabilirsiniz:
zaman uygulamak için TimePicker
ve TimeInput
composable'ları kullanma
seçici ile birlikte kontrol edin.
Türler
İki tür zaman seçici vardır:
- Numara çevirme: Kullanıcıların, tutma yerini kadranın etrafında hareket ettirerek saat ayarlamasına olanak tanır.
- Giriş: Kullanıcıların klavyelerini kullanarak bir saat ayarlamasına olanak tanır.
Aşağıdaki resimde, soldaki arama zamanı seçici için bir örnek verilmiştir. Sağda bir giriş saati seçici göreceksiniz:
![Bir kadranı ve bir giriş saati seçicisi.](https://developer.android.com/static/develop/ui/compose/images/components/timepickers.png?hl=tr)
API yüzeyi
Bir zaman seçiciyi uygulamak için TimePicker
veya TimeInput
kullanın
composable:
TimePicker
: Arama zamanı seçici uygular.TimeInput
: Giriş saati seçici uygular.
Eyalet
Hem TimePicker
hem de TimeInput
için şu değerlendirmeyi de geçmeniz gerekir:
TimePickerState
. Bu, gösterilecek varsayılan seçili saati ayarlamanıza olanak tanır
tıklayın. Ayrıca kullanıcının
kullanabilirsiniz.
Dialog
İletişim kutularında saat seçiciler görünür. Bu kılavuzdaki örneklerde iletişim kutusu kullanılmaz. İletişim kutularının kullanıldığı örnekler için Zaman seçiciler için iletişim kutuları kılavuzuna bakın.
Saat seçici
Bu snippet, temel bir arama zamanı seçicinin nasıl uygulanacağını gösterir.
@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") } } }
Bu snippet'te şunları göz önünde bulundurun:
Calendar.getInstance()
,TimePickerState
öğesini geçerli gerekir.- Bu örnekte
java.util.Calendar
kullanılmıştır. Java'yı etkinleştirin Projenizde 8'den fazla API'nin sadeleştirilmesi Tüm Android sürümlerindejava.time.LocalTime
.
- Bu örnekte
TimePicker
composable, zaman seçiciyi gösterir ve parametre olaraktimePickerState
.- Uygulamada biri seçimi onaylamak için, diğeri ise seçimi onaylamak için başka bir tane de ayarlayabilirsiniz.
Bu uygulama aşağıdaki gibi görünür:
![Çevirme zamanı seçici. Kullanıcı, kadranı kullanarak bir saat seçebilir.](https://developer.android.com/static/develop/ui/compose/images/components/timepicker-dial.png?hl=tr)
Giriş saati seçici
Bu snippet, temel giriş stili saat seçicinin nasıl uygulanacağını gösterir.
@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") } } }
Bu uygulamada dikkat edilmesi gereken temel noktalar:
- Yapı temelde çevirme zamanı seçiciyle aynıdır. Asıl
TimePicker
yerineTimeInput
kullanımıdır. timePickerState
içinis24Hour
parametresi açıkçatrue
olarak ayarlandı. Bu değer varsayılan olarakfalse
şeklindedir.
Bu uygulama aşağıdaki gibi görünür:
![Giriş saati seçici. Kullanıcı, metin alanlarını kullanarak bir saat girebilir.](https://developer.android.com/static/develop/ui/compose/images/components/timepicker-input.png?hl=tr)
Eyaleti kullan
Kullanıcının zaman seçicide seçtiği zamandan yararlanmak için
onConfirm
fonksiyonunuza uygun TimePickerState
. Üst öğe
composable, daha sonra TimePickerState.hour
üzerinden seçilen zamana erişebilir ve
TimePickerState.minute
.
Aşağıdaki snippet'te bunun nasıl yapılacağı gösterilmektedir:
@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") } } }
Ardından, composable'ı şu şekilde çağırabilirsiniz:
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.")
}
Daha fazla ayrıntı için Snippet'lerdeki tam uygulamaya bakın uygulamasında gösterilir.