在螢幕較大的裝置上,導覽邊欄可讓使用者前往應用程式中的目的地。導覽邊欄適用於:
- 在應用程式中任何位置都能存取的頂層目的地
- 三到七個主要目的地
- 平板電腦或電腦版面配置
本頁面說明如何使用相關畫面和基本導覽功能,在應用程式中顯示側欄。
API 介面
搭配使用 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會顯示垂直欄的側邊欄項目,每個項目對應一個Destination。val navController = rememberNavController()會建立並記住NavHostController的例項,用於管理NavHost內的導覽。var selectedDestination by rememberSaveable { mutableIntStateOf(startDestination.ordinal) }會管理所選側欄項目的狀態。startDestination.ordinal會取得Destination.SONGS列舉項目的數值索引 (位置)。
- 點選側邊欄項目時,系統會呼叫
navController.navigate(route = destination.route),前往對應的畫面。 NavigationRailItem的onClicklambda 會更新selectedDestination狀態,以視覺方式醒目顯示點選的側欄項目。- 它會呼叫
AppNavHost可組合函式,傳遞navController和startDestination,以顯示所選畫面的實際內容。
結果
下圖顯示上述程式碼片段的結果:
