הכרטיסיות מאפשרות לארגן קבוצות של תוכן קשור. יש שני סוגים של כרטיסיות:
- כרטיסיות ראשיות: ממוקמות בחלק העליון של חלונית התוכן מתחת לסרגל האפליקציה העליון. הם מציגים את יעדי התוכן העיקריים, וצריך להשתמש בהם כשנדרש רק סט אחד של כרטיסיות.
- כרטיסיות משניות: משמשות בתוך אזור תוכן כדי להפריד עוד יותר בין תכנים קשורים וליצור היררכיה. הם נדרשים כשמסך מסוים כולל יותר מרמה אחת של כרטיסיות.

בדף הזה מוסבר איך להציג כרטיסיות ראשיות באפליקציה עם מסכים קשורים וניווט בסיסי.
משטח API
כדי להטמיע כרטיסיות, משתמשים ברכיבי ה-Composable Tab
, PrimaryTabRow
ו-SecondaryTabRow
. רכיב ה-Tab
מייצג כרטיסייה נפרדת בשורה, ובדרך כלל משתמשים בו בתוך PrimaryTabRow
(לכרטיסיות של אינדיקטורים ראשיים) או SecondaryTabRow
(לכרטיסיות של אינדיקטורים משניים).
Tab
כולל את הפרמטרים העיקריים הבאים:
-
selected
: קובע אם הכרטיסייה הנוכחית מודגשת חזותית. -
onClick()
: פונקציית lambda נדרשת שמגדירה את הפעולה שתתבצע כשהמשתמש ילחץ על הכרטיסייה. כאן בדרך כלל מטפלים באירועי ניווט, מעדכנים את מצב הכרטיסייה שנבחרה או טוענים את התוכן המתאים. -
text
: הצגת טקסט בכרטיסייה. אופציונלי. -
icon
: הצגת סמל בכרטיסייה. אופציונלי. -
enabled
: קובעת אם הכרטיסייה מופעלת ואם אפשר ליצור איתה אינטראקציה. אם הערך הוא False, הכרטיסייה מופיעה במצב מושבת ולא מגיבה ללחיצות.
דוגמה: ניווט מבוסס-כרטיסיות
קטע הקוד הבא מטמיע סרגל ניווט עליון עם כרטיסיות לניווט בין מסכים שונים באפליקציה:
@Composable fun NavigationTabExample(modifier: Modifier = Modifier) { val navController = rememberNavController() val startDestination = Destination.SONGS var selectedDestination by rememberSaveable { mutableIntStateOf(startDestination.ordinal) } Scaffold(modifier = modifier) { contentPadding -> PrimaryTabRow(selectedTabIndex = selectedDestination, modifier = Modifier.padding(contentPadding)) { Destination.entries.forEachIndexed { index, destination -> Tab( selected = selectedDestination == index, onClick = { navController.navigate(route = destination.route) selectedDestination = index }, text = { Text( text = destination.label, maxLines = 2, overflow = TextOverflow.Ellipsis ) } ) } } AppNavHost(navController, startDestination) } }
נקודות עיקריות
PrimaryTabRow
מוצגת שורה אופקית של כרטיסיות, כשכל כרטיסייה מתאימה לDestination
.-
val navController = rememberNavController()
יוצרת וזוכרת מופע שלNavHostController
, שמנהל את הניווט בתוךNavHost
. -
var selectedDestination by rememberSaveable { mutableIntStateOf(startDestination.ordinal) }
מנהל את המצב של הכרטיסייה שנבחרה.-
startDestination.ordinal
מחזירה את האינדקס המספרי (המיקום) של רשומה בסוג הנתונים המונהDestination.SONGS
.
-
- כשלוחצים על כרטיסייה, הפונקציה
onClick
lambda קוראתnavController.navigate(route = destination.route)
כדי לנווט למסך המתאים. - פונקציית ה-lambda
onClick
שלTab
מעדכנת את המצבselectedDestination
כדי להדגיש חזותית את הכרטיסייה שנלחצה. - הפונקציה קוראת ל-
AppNavHost
composable, מעבירה אתnavController
ואתstartDestination
, כדי להציג את התוכן בפועל של המסך שנבחר.
התוצאה
בתמונה הבאה מוצגת התוצאה של קטע הקוד הקודם:
.png?authuser=0&hl=he)