במתכון הזה מוסבר איך API Grid משפר את קריאות הקוד בהשוואה למבנים מסורתיים של קינון. אם מגדירים רצועות בגודל אוטומטי, אפשר ליצור רשת שמותאמת באופן דינמי לרוחב ולגובה של התאים על סמך הגודל המובנה של רכיבי הטקסט.
במתכון הזה, יוצרים טבלה באמצעות Grid API.
| פריסה | טעינה מדורגת | גלישת טקסט | עדכון פריסה דינמית | |
|---|---|---|---|---|
FlexBox |
יום | לא | כן | כן |
Grid |
דו-ממדי | לא | לא | כן |
שיטות מומלצות
כדי לשפר את הקריאות והתחזוקה של הטבלה, אפשר להשתמש ברכיב Grid. Grid מאפשרת לכם לשלוט במדויק בממדי העמודות וביישור שלהן בכל השורות, בלי שתצטרכו לסנכרן את הרוחב באופן ידני.
אלמנטים
-
Grid: פריסה שאפשר להרכיב ממנה פריסות אחרות, שבה הפריטים מוצבים ברשת דו-ממדית. הגדרת הפריסה מצוינת בפרמטר lambdaconfig, ופריטים של תוכן ממשק המשתמש מוצהרים בפרמטר lambdacontent. -
GridTrackSize.Auto: מציין שינוי גודל אוטומטי של רצועות ברשת בהתאם לגודל המהותי של התוכן. לדוגמה:column(GridTrackSize.Auto)ו-row(GridTrackSize.Auto). -
gap(): מגדיר את הריווח בין השורות והעמודות בתוךGridConfigurationScope, למשלgap(row = 8.dp, column = 16.dp).
צעדים
יוצרים טבלת השוואה עם כמה עמודות באמצעות פריסת Grid אחת עם יישור אוטומטי של העמודות והתאמת הגודל של כל הפריטים.
1. ספירת השורות והעמודות ברשת כדי לקבוע את גודלי הרצועות
קודם כל, סופרים את העמודות והשורות כדי לקבוע את הגודל של הרצועות:
- עמודות: מספר המאפיינים שאתם משווים, ועוד עמודה אחת לשם הפריט.
- שורות: מספר הפריטים שאתם משווים, ועוד שורת כותרת אחת.
לדוגמה, כדי להשוות בין שני רכיבים (FlexBox ו-Grid) בארבעה מאפיינים, צריך ליצור טבלה עם חמש עמודות ושלוש שורות.
2. הטמעה של טבלת השוואה באמצעות Grid
יוצרים קומפוזבל TableInGrid שמשתמש ב-Grid כדי להציג את הפריטים בטבלה. קוראים לפונקציות column ו-row בתוך הלמדה config כדי להגדיר את גדלי הרצועות, ומגדירים את הריווח בין התאים באמצעות gap(). לטקסט יש גודל פנימי, ולכן GridTrackSize.Auto משנה את הגודל של העמודות והשורות באופן אוטומטי כדי שיתאים לתוכן שלהן.
בתוך ה-lambda content, מציבים את כותרות הטבלה והנתונים. Grid מטפל באופן אוטומטי במיקום וביישור של כל התאים:
@Composable fun TableInGrid( modifier: Modifier = Modifier, ) { Grid( config = { column(GridTrackSize.Auto) column(GridTrackSize.Auto) column(GridTrackSize.Auto) column(GridTrackSize.Auto) column(GridTrackSize.Auto) row(GridTrackSize.Auto) row(GridTrackSize.Auto) row(GridTrackSize.Auto) gap(row = 8.dp, column = 16.dp) }, modifier = modifier, ) { // Table Header Text(text = "", fontWeight = FontWeight.Bold) Text(text = "Layout", fontWeight = FontWeight.Bold) Text(text = "Lazy loading", fontWeight = FontWeight.Bold) Text(text = "Soft wrap", fontWeight = FontWeight.Bold) Text(text = "Dynamic layout update", fontWeight = FontWeight.Bold) // FlexBox Row Text(text = "FlexBox", fontWeight = FontWeight.Bold) Text(text = "1D") Text(text = "No") Text(text = "Yes") Text(text = "Yes") // Grid Row Text(text = "Grid", fontWeight = FontWeight.Bold) Text(text = "2D") Text(text = "No") Text(text = "No") Text(text = "Yes") } }
תוצאות
יצרתם טבלת השוואה נקייה ודו-ממדית עם יישור אוטומטי של העמודות וריווח בין התאים.
Grid.