ড্রপ-ডাউন মেনু ব্যবহারকারীদের একটি আইকন, টেক্সট ক্ষেত্র বা অন্যান্য উপাদানে ক্লিক করতে দেয় এবং তারপর একটি অস্থায়ী পৃষ্ঠের বিকল্পগুলির একটি তালিকা থেকে নির্বাচন করে৷ এই নির্দেশিকাটি বর্ণনা করে কিভাবে বিভাজক এবং আইকন সহ মৌলিক মেনু এবং আরও জটিল মেনু উভয়ই তৈরি করা যায়।

API পৃষ্ঠ
একটি কাস্টম ড্রপ-ডাউন মেনু বাস্তবায়ন করতে DropdownMenu
, DropdownMenuItem
, এবং IconButton
উপাদানগুলি ব্যবহার করুন৷ DropdownMenu
এবং DropdownMenuItem
আইটেম উপাদানগুলি মেনু আইটেমগুলি প্রদর্শন করতে ব্যবহৃত হয়, যখন IconButton
হল ড্রপ ডাউন মেনু প্রদর্শন বা লুকানোর ট্রিগার।
DropdownMenu
উপাদানের মূল পরামিতিগুলির মধ্যে নিম্নলিখিতগুলি অন্তর্ভুক্ত রয়েছে:
-
expanded
: মেনুটি দৃশ্যমান কিনা তা নির্দেশ করে। -
onDismissRequest
: মেনু বরখাস্ত পরিচালনা করতে ব্যবহৃত হয়। -
content
: মেনুর কম্পোজযোগ্য বিষয়বস্তু, সাধারণতDropdownMenuItem
আইটেম কম্পোজেবল থাকে।
DropdownMenuItem
মূল পরামিতিগুলির মধ্যে নিম্নলিখিতগুলি অন্তর্ভুক্ত রয়েছে:
-
text
: মেনু আইটেমে প্রদর্শিত বিষয়বস্তু সংজ্ঞায়িত করে। -
onClick
: মেনুতে থাকা আইটেমের সাথে মিথস্ক্রিয়া পরিচালনা করতে কলব্যাক করুন।
একটি মৌলিক ড্রপ-ডাউন মেনু তৈরি করুন
নিম্নলিখিত স্নিপেট একটি ন্যূনতম DropdownMenu
বাস্তবায়ন প্রদর্শন করে:
@Composable fun MinimalDropdownMenu() { var expanded by remember { mutableStateOf(false) } Box( modifier = Modifier .padding(16.dp) ) { IconButton(onClick = { expanded = !expanded }) { Icon(Icons.Default.MoreVert, contentDescription = "More options") } DropdownMenu( expanded = expanded, onDismissRequest = { expanded = false } ) { DropdownMenuItem( text = { Text("Option 1") }, onClick = { /* Do something... */ } ) DropdownMenuItem( text = { Text("Option 2") }, onClick = { /* Do something... */ } ) } } }
কোড সম্পর্কে মূল পয়েন্ট
- দুটি মেনু আইটেম ধারণকারী একটি মৌলিক
DropdownMenu
সংজ্ঞায়িত করে। -
expanded
প্যারামিটার মেনুর দৃশ্যমানতাকে প্রসারিত বা সংকোচন হিসাবে নিয়ন্ত্রণ করে। -
onDismissRequest
প্যারামিটার একটি কলব্যাককে সংজ্ঞায়িত করে যা ব্যবহারকারী যখন মেনু বন্ধ করে তখন কার্যকর হয়। -
DropdownMenuItem
কম্পোজেবল ড্রপ-ডাউন মেনুতে নির্বাচনযোগ্য আইটেম উপস্থাপন করে। - একটি
IconButton
মেনুটির সম্প্রসারণ এবং পতনকে ট্রিগার করে।
ফলাফল

একটি দীর্ঘ ড্রপ-ডাউন মেনু তৈরি করুন
DropdownMenu
ডিফল্টরূপে স্ক্রোলযোগ্য যদি সমস্ত মেনু আইটেম একবারে প্রদর্শিত না হয়। নিম্নলিখিত স্নিপেটটি একটি দীর্ঘ, স্ক্রোলযোগ্য ড্রপ-ডাউন মেনু তৈরি করে:
@Composable fun LongBasicDropdownMenu() { var expanded by remember { mutableStateOf(false) } // Placeholder list of 100 strings for demonstration val menuItemData = List(100) { "Option ${it + 1}" } Box( modifier = Modifier .padding(16.dp) ) { IconButton(onClick = { expanded = !expanded }) { Icon(Icons.Default.MoreVert, contentDescription = "More options") } DropdownMenu( expanded = expanded, onDismissRequest = { expanded = false } ) { menuItemData.forEach { option -> DropdownMenuItem( text = { Text(option) }, onClick = { /* Do something... */ } ) } } } }
কোড সম্পর্কে মূল পয়েন্ট
-
DropdownMenu
স্ক্রোলযোগ্য হয় যখন এর সামগ্রীর মোট উচ্চতা উপলব্ধ স্থান অতিক্রম করে। এই কোডটি একটি স্ক্রোলযোগ্যDropdownMenu
তৈরি করে যা 100টি স্থানধারক আইটেম প্রদর্শন করে। -
forEach
লুপ গতিশীলভাবেDropdownMenuItem
কম্পোজেবল তৈরি করে। আইটেমগুলি অলসভাবে তৈরি করা হয় না, যার অর্থ হল সমস্ত 100টি ড্রপ-ডাউন আইটেম তৈরি করা হয়েছে এবং কম্পোজিশনে বিদ্যমান। - ক্লিক করা হলে
IconButton
DropdownMenu
সম্প্রসারণ এবং পতনকে ট্রিগার করে। - প্রতিটি
DropdownMenuItem
আইটেমের মধ্যেonClick
ল্যাম্বডা আপনাকে ব্যবহারকারীর একটি মেনু আইটেম নির্বাচন করার সময় সম্পাদিত ক্রিয়াটি সংজ্ঞায়িত করতে দেয়।
ফলাফল
পূর্ববর্তী কোড স্নিপেট নিম্নলিখিত স্ক্রোলযোগ্য মেনু তৈরি করে:

ডিভাইডার সহ একটি দীর্ঘ ড্রপ-ডাউন মেনু তৈরি করুন
নিম্নলিখিত স্নিপেটটি একটি ড্রপ-ডাউন মেনুর আরও উন্নত বাস্তবায়ন দেখায়। এই স্নিপেটে, লিডিং এবং ট্রেইলিং আইকনগুলি মেনু আইটেমগুলিতে যোগ করা হয় এবং মেনু আইটেমগুলির পৃথক গোষ্ঠীগুলিকে ভাগ করে৷
@Composable fun DropdownMenuWithDetails() { var expanded by remember { mutableStateOf(false) } Box( modifier = Modifier .fillMaxWidth() .padding(16.dp) ) { IconButton(onClick = { expanded = !expanded }) { Icon(Icons.Default.MoreVert, contentDescription = "More options") } DropdownMenu( expanded = expanded, onDismissRequest = { expanded = false } ) { // First section DropdownMenuItem( text = { Text("Profile") }, leadingIcon = { Icon(Icons.Outlined.Person, contentDescription = null) }, onClick = { /* Do something... */ } ) DropdownMenuItem( text = { Text("Settings") }, leadingIcon = { Icon(Icons.Outlined.Settings, contentDescription = null) }, onClick = { /* Do something... */ } ) HorizontalDivider() // Second section DropdownMenuItem( text = { Text("Send Feedback") }, leadingIcon = { Icon(Icons.Outlined.Feedback, contentDescription = null) }, trailingIcon = { Icon(Icons.AutoMirrored.Outlined.Send, contentDescription = null) }, onClick = { /* Do something... */ } ) HorizontalDivider() // Third section DropdownMenuItem( text = { Text("About") }, leadingIcon = { Icon(Icons.Outlined.Info, contentDescription = null) }, onClick = { /* Do something... */ } ) DropdownMenuItem( text = { Text("Help") }, leadingIcon = { Icon(Icons.AutoMirrored.Outlined.Help, contentDescription = null) }, trailingIcon = { Icon(Icons.AutoMirrored.Outlined.OpenInNew, contentDescription = null) }, onClick = { /* Do something... */ } ) } } }
এই কোডটি একটি Box
মধ্যে একটি DropdownMenu
সংজ্ঞায়িত করে।
কোড সম্পর্কে মূল পয়েন্ট
-
leadingIcon
এবংtrailingIcon
প্যারামিটারগুলি একটিDropdownMenuItem
শুরু এবং শেষে আইকন যুক্ত করে। - একটি
IconButton
মেনুর সম্প্রসারণকে ট্রিগার করে। -
DropdownMenu
বেশ কয়েকটিDropdownMenuItem
কম্পোজেবল রয়েছে, প্রতিটি নির্বাচনযোগ্য ক্রিয়াকে উপস্থাপন করে। -
HorizontalDivider
composables একটি অনুভূমিক রেখা সন্নিবেশ করান মেনু আইটেমগুলির পৃথক গোষ্ঠীতে।
ফলাফল
পূর্ববর্তী স্নিপেট আইকন এবং বিভাজক সহ একটি ড্রপ-ডাউন মেনু তৈরি করে:

অতিরিক্ত সম্পদ
- উপাদান নকশা: মেনু