সময় বাছাইকারীরা প্রায়ই ডায়ালগে উপস্থিত হয়। আপনি একটি ডায়ালগের তুলনামূলক জেনেরিক এবং ন্যূনতম বাস্তবায়ন ব্যবহার করতে পারেন, অথবা আপনি আরও নমনীয়তার সাথে একটি কাস্টম ডায়ালগ প্রয়োগ করতে পারেন।
টাইম পিকার স্টেট কিভাবে ব্যবহার করতে হয় সহ সাধারণভাবে ডায়ালগ সম্পর্কে আরও তথ্যের জন্য, টাইম পিকার গাইড দেখুন।
মৌলিক উদাহরণ
আপনার সময় চয়নকারীর জন্য একটি ডায়ালগ তৈরি করার সবচেয়ে সহজ উপায় হল একটি কম্পোজযোগ্য তৈরি করা যা AlertDialog
প্রয়োগ করে। নিম্নলিখিত স্নিপেটটি এই পদ্ধতি ব্যবহার করে তুলনামূলকভাবে ন্যূনতম ডায়ালগের একটি উদাহরণ প্রদান করে:
@Composable fun DialWithDialogExample( 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, ) TimePickerDialog( onDismiss = { onDismiss() }, onConfirm = { onConfirm(timePickerState) } ) { TimePicker( state = timePickerState, ) } } @Composable fun TimePickerDialog( onDismiss: () -> Unit, onConfirm: () -> Unit, content: @Composable () -> Unit ) { AlertDialog( onDismissRequest = onDismiss, dismissButton = { TextButton(onClick = { onDismiss() }) { Text("Dismiss") } }, confirmButton = { TextButton(onClick = { onConfirm() }) { Text("OK") } }, text = { content() } ) }
এই স্নিপেটের মূল পয়েন্টগুলি নোট করুন:
-
DialWithDialogExample
কম্পোজেবলTimePicker
একটি ডায়ালগে মোড়ানো। -
TimePickerDialog
হল একটি কাস্টম কম্পোজযোগ্য যা নিম্নলিখিত পরামিতিগুলির সাথে একটিAlertDialog
তৈরি করে:-
onDismiss
: একটি ফাংশন বলা হয় যখন ব্যবহারকারী ডায়ালগটি খারিজ করে দেয় (খারিজ বোতাম বা নেভিগেশন ব্যাক এর মাধ্যমে)। -
onConfirm
: একটি ফাংশন বলা হয় যখন ব্যবহারকারী "OK" বোতামে ক্লিক করেন। -
content
: একটি সংমিশ্রণযোগ্য যা ডায়ালগের মধ্যে সময় চয়নকারী প্রদর্শন করে।
-
-
AlertDialog
এর মধ্যে রয়েছে:- "খারিজ" লেবেলযুক্ত একটি খারিজ বোতাম।
- "ঠিক আছে" লেবেলযুক্ত একটি নিশ্চিত বোতাম।
- টাইম পিকার কন্টেন্ট
text
প্যারামিটার হিসেবে পাস করা হয়েছে।
-
DialWithDialogExample
বর্তমান সময়ের সাথেTimePickerState
আরম্ভ করে এবং এটিকেTimePicker
এবংonConfirm
ফাংশনে পাস করে।
উন্নত উদাহরণ
এই স্নিপেট জেটপ্যাক কম্পোজে একটি কাস্টমাইজযোগ্য সময় পিকার ডায়ালগের একটি উন্নত বাস্তবায়ন প্রদর্শন করে।
@Composable fun AdvancedTimePickerExample( 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, ) /** Determines whether the time picker is dial or input */ var showDial by remember { mutableStateOf(true) } /** The icon used for the icon button that switches from dial to input */ val toggleIcon = if (showDial) { Icons.Filled.EditCalendar } else { Icons.Filled.AccessTime } AdvancedTimePickerDialog( onDismiss = { onDismiss() }, onConfirm = { onConfirm(timePickerState) }, toggle = { IconButton(onClick = { showDial = !showDial }) { Icon( imageVector = toggleIcon, contentDescription = "Time picker type toggle", ) } }, ) { if (showDial) { TimePicker( state = timePickerState, ) } else { TimeInput( state = timePickerState, ) } } } @Composable fun AdvancedTimePickerDialog( title: String = "Select Time", onDismiss: () -> Unit, onConfirm: () -> Unit, toggle: @Composable () -> Unit = {}, content: @Composable () -> Unit, ) { Dialog( onDismissRequest = onDismiss, properties = DialogProperties(usePlatformDefaultWidth = false), ) { Surface( shape = MaterialTheme.shapes.extraLarge, tonalElevation = 6.dp, modifier = Modifier .width(IntrinsicSize.Min) .height(IntrinsicSize.Min) .background( shape = MaterialTheme.shapes.extraLarge, color = MaterialTheme.colorScheme.surface ), ) { Column( modifier = Modifier.padding(24.dp), horizontalAlignment = Alignment.CenterHorizontally ) { Text( modifier = Modifier .fillMaxWidth() .padding(bottom = 20.dp), text = title, style = MaterialTheme.typography.labelMedium ) content() Row( modifier = Modifier .height(40.dp) .fillMaxWidth() ) { toggle() Spacer(modifier = Modifier.weight(1f)) TextButton(onClick = onDismiss) { Text("Cancel") } TextButton(onClick = onConfirm) { Text("OK") } } } } } }
এই স্নিপেটের মূল পয়েন্টগুলি নোট করুন:
-
AdvancedTimePickerExample
কম্পোজেবল একটি কাস্টমাইজযোগ্য সময় পিকার ডায়ালগ তৈরি করে। - এটি
AlertDialog
এর চেয়ে বেশি নমনীয়তার জন্য একটিDialog
কম্পোজযোগ্য ব্যবহার করে। - ডায়লগটিতে একটি কাস্টমাইজযোগ্য শিরোনাম এবং ডায়াল এবং ইনপুট মোডগুলির মধ্যে স্যুইচ করার জন্য একটি টগল বোতাম রয়েছে৷
- প্রস্থ এবং উচ্চতা উভয়ের জন্য
IntrinsicSize.Min
সহ,Surface
ডায়ালগে আকৃতি এবং উচ্চতা প্রয়োগ করে। -
Column
এবংRow
লেআউট ডায়ালগের গঠন উপাদান প্রদান করে। - উদাহরণটি
showDial
ব্যবহার করে পিকার মোড ট্র্যাক করে।- একটি
IconButton
মোডগুলির মধ্যে টগল করে, সেই অনুযায়ী আইকন আপডেট করে। -
showDial
অবস্থার উপর ভিত্তি করে ডায়ালগ বিষয়বস্তুTimePicker
এবংTimeInput
মধ্যে স্যুইচ করে।
- একটি
এই উন্নত বাস্তবায়ন একটি অত্যন্ত কাস্টমাইজযোগ্য এবং পুনঃব্যবহারযোগ্য টাইম পিকার ডায়ালগ প্রদান করে যা আপনার অ্যাপের বিভিন্ন ব্যবহারের ক্ষেত্রে মানিয়ে নিতে পারে।
এই বাস্তবায়ন নিম্নলিখিত হিসাবে প্রদর্শিত হবে: