แถบจะช่วยให้เข้าถึงปลายทางในแอปที่ทำงานบนอุปกรณ์ที่มีหน้าจอขนาดใหญ่ได้ คุณควรใช้แถบนำทางสำหรับสิ่งต่อไปนี้
- ปลายทางระดับบนสุดที่ต้องเข้าถึงได้จากทุกที่ในแอป
- จุดหมายหลัก 3-7 แห่ง
- เลย์เอาต์แท็บเล็ตหรือเดสก์ท็อป
หน้านี้แสดงวิธีแสดงแถบในแอปพร้อมหน้าจอที่เกี่ยวข้องและการนําทางพื้นฐาน
แพลตฟอร์ม API
ใช้ Composable NavigationRail กับ NavigationRailItem เพื่อใช้แถบในแอปพลิเคชัน NavigationRailItem แสดงถึงรายการรางเดียวในคอลัมน์ราง
NavigationRailItem มีพารามิเตอร์หลักต่อไปนี้
selected: ระบุว่าจะไฮไลต์รายการแถบปัจจุบันให้เห็นชัดเจนหรือไม่onClick(): ฟังก์ชัน Lambda ที่จำเป็นซึ่งกำหนดการดำเนินการที่จะทำเมื่อผู้ใช้คลิกรายการในแถบนำทาง ซึ่งโดยปกติแล้วคุณจะจัดการเหตุการณ์การนำทาง อัปเดตสถานะรายการที่เลือกในแถบ หรือโหลดเนื้อหาที่เกี่ยวข้องที่นี่label: แสดงข้อความภายในรายการแถบด้านข้าง ไม่บังคับicon: แสดงไอคอนภายในรายการแถบเลื่อน ไม่บังคับ
ตัวอย่าง: การนำทางแบบแถบด้านข้าง
ข้อมูลโค้ดต่อไปนี้จะใช้แถบการนำทางเพื่อให้ผู้ใช้ไปยังหน้าจอต่างๆ ในแอปได้
@Composable fun NavigationRailExample(modifier: Modifier = Modifier) { val navController = rememberNavController() val startDestination = Destination.SONGS var selectedDestination by rememberSaveable { mutableIntStateOf(startDestination.ordinal) } Scaffold(modifier = modifier) { contentPadding -> NavigationRail(modifier = Modifier.padding(contentPadding)) { Destination.entries.forEachIndexed { index, destination -> NavigationRailItem( selected = selectedDestination == index, onClick = { navController.navigate(route = destination.route) selectedDestination = index }, icon = { Icon( destination.icon, contentDescription = destination.contentDescription ) }, label = { Text(destination.label) } ) } } AppNavHost(navController, startDestination) } }
ข้อมูลสำคัญ
NavigationRailแสดงคอลัมน์แนวตั้งของรายการในแถบ โดยแต่ละรายการจะสอดคล้องกับDestinationval navController = rememberNavController()สร้างและจดจำอินสแตนซ์ของNavHostControllerซึ่งจัดการการนำทางภายในNavHostvar selectedDestination by rememberSaveable { mutableIntStateOf(startDestination.ordinal) }จัดการสถานะของรายการที่เลือกในแถบด้านข้างstartDestination.ordinalรับดัชนีตัวเลข (ตำแหน่ง) ของรายการ enumDestination.SONGS
- เมื่อคลิกรายการในแถบนำทาง ระบบจะเรียกใช้
navController.navigate(route = destination.route)เพื่อไปยังหน้าจอที่เกี่ยวข้อง - Lambda
onClickของNavigationRailItemจะอัปเดตสถานะselectedDestinationเพื่อไฮไลต์รายการที่คลิกด้วยภาพ - โดยจะเรียกใช้ Composable
AppNavHostโดยส่งnavControllerและstartDestinationเพื่อแสดงเนื้อหาจริงของหน้าจอที่เลือก
ผลลัพธ์
รูปภาพต่อไปนี้แสดงผลลัพธ์ของข้อมูลโค้ดก่อนหน้า