Saat seçicileri, kullanıcıların saat seçmesine olanak tanır. Uygulamanızda zaman seçici uygulamak için TimePicker
ve TimeInput
bileşenlerini kullanabilirsiniz.
Türler
İki tür zaman seçici vardır:
- Kadran: Kullanıcıların kadran üzerinde bir kolu hareket ettirerek saati ayarlamalarına olanak tanır.
- Giriş: Kullanıcıların klavyelerini kullanarak saat ayarlamalarına olanak tanır.
Aşağıdaki resimde, sol tarafta kadran saat seçici, sağ tarafta ise giriş saati seçici örneği verilmiştir:
API yüzeyi
Zaman seçici uygulamak için TimePicker
veya TimeInput
bileşenini kullanın:
TimePicker
: Kadrandaki saat seçiciyi uygular.TimeInput
: Giriş saati seçici uygular.
Eyalet
Hem TimePicker
hem de TimeInput
için bir TimePickerState
da göndermeniz gerekir. Bu sayede, seçicide görünen varsayılan seçili zamanı ayarlayabilirsiniz. Ayrıca, kullanıcının seçiciyi kullanarak seçtiği zamanı da yakalar.
Dialog
Zaman seçicileri iletişim kutularında görünür. Bu kılavuzda verilen örneklerde iletişim kutuları kullanılmamıştır. İletişim kutusu kullanan örnekler için Zaman seçicileri için iletişim kutuları kılavuzuna bakın.
Kadranda saat seçici
Bu snippet'te, temel bir kadran saat seçicinin nasıl uygulanacağı gösterilmektedir.
@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 aşağıdakileri göz önünde bulundurun:
Calendar.getInstance()
,TimePickerState
öğesini geçerli saatle başlatır.- Bu örnekte
java.util.Calendar
kullanılmaktadır. Tüm Android sürümlerindejava.time.LocalTime
'yi alternatif olarak kullanmak için projenizde Java 8 ve sonraki sürümlerde API şekerini kaldırma özelliğini etkinleştirin.
- Bu örnekte
TimePicker
composable,timePickerState
parametresini alarak zaman seçiciyi gösterir.- Uygulamada iki düğme bulunur: biri seçimi onaylamak, diğeri seçiciyi kapatmak için.
Bu uygulama aşağıdaki gibi görünür:
Giriş saat seçici
Bu snippet'te, temel giriş stili zaman seçicinin nasıl uygulanacağı gösterilmektedir.
@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 önemli noktalar:
- Yapısı, kadran saat seçiciyle aynıdır. Aradaki temel fark,
TimePicker
yerineTimeInput
kullanılmasıdır. timePickerState
içinis24Hour
parametresi açıkçatrue
olarak ayarlanmıştır. Varsayılan olarak bu değerfalse
'tür.
Bu uygulama aşağıdaki gibi görünür:
Durumu kullanma
Kullanıcının bir zaman seçicide seçtiği zamanı kullanmak için uygun TimePickerState
değerini onConfirm
işlevinize iletin. Ana bileşim, TimePickerState.hour
ve TimePickerState.minute
aracılığıyla seçilen zamana erişebilir.
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") } } }
Daha sonra, bileşeni ş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 bilgi için snippet uygulamasındaki tam uygulamaya bakın.