TableLayout
הוא ViewGroup
מציגה רכיבי צאצא של View
בשורות ובעמודות.
הערה: כדי לקבל תמיכה טובה יותר בביצועים ובכלים, מומלץ ליצור את הפריסה באמצעות ConstraintLayout.
הפונקציה TableLayout
ממקמת את הצאצאים בשורות וגם
עמודות. מאגרי 'פריסת טבלה' לא מציגים קווי גבול עבור השורות שלהם,
עמודות או תאים. הטבלה תכלול מספר עמודות כמו השורה עם
רוב התאים. טבלה יכולה להשאיר תאים ריקים. תאים יכולים להתפרס על פני כמה עמודות:
ב-HTML. אפשר לפרוס עמודות באמצעות הפונקציה span
בשדה TableRow.LayoutParams
במחלקה.
הערה: תאים לא יכולים להתפרס על כמה שורות.
אובייקטים מסוג TableRow
הם תצוגות צאצא של TableLayout
(כל שורה מגדירה שורה אחת בטבלה). בכל שורה יש אפס או יותר
תאים, שכל אחד מהם מוגדר על ידי תצוגה מפורטת אחרת כלשהי. התאים של
שורה יכולה להיות מורכבת ממגוון אובייקטים של View, כמו ImageView או
אובייקטים מסוג TextView. תא יכול להיות גם אובייקט ViewGroup (לדוגמה,
יכול להציב משבצות נוספות של 'פריסת טבלה' כתא).
הפריסה לדוגמה הבאה מכילה שתי שורות ושני תאים בכל אחת מהן. צילום מסך נלווה מציג את התוצאה, כאשר גבולות התא מוצגים כך: קווים מקווקווים (נוספים ליצירת אפקט חזותי).
<?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:stretchColumns="1"> <TableRow> <TextView android:text="@string/table_layout_4_open" android:padding="3dip" /> <TextView android:text="@string/table_layout_4_open_shortcut" android:gravity="right" android:padding="3dip" /> </TableRow> <TableRow> <TextView android:text="@string/table_layout_4_save" android:padding="3dip" /> <TextView android:text="@string/table_layout_4_save_shortcut" android:gravity="right" android:padding="3dip" /> </TableRow> </TableLayout>
אפשר להסתיר עמודות, לסמן אותן כדי למתוח ולמלא את השטח הזמין במסך,
או שאפשר לסמן אותה כניתנת לכיווץ כדי לאלץ את כיווץ העמודה עד שהטבלה
שמתאים למסך. לצפייה בTableLayout reference
לקבלת פרטים נוספים.
דוגמה
- מתחילים פרויקט חדש בשם HelloTableLayout.
- פותחים את הקובץ
res/layout/main.xml
ומזינים את הפרטים הבאים:<?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:stretchColumns="1"> <TableRow> <TextView android:layout_column="1" android:text="Open..." android:padding="3dip" /> <TextView android:text="Ctrl-O" android:gravity="right" android:padding="3dip" /> </TableRow> <TableRow> <TextView android:layout_column="1" android:text="Save..." android:padding="3dip" /> <TextView android:text="Ctrl-S" android:gravity="right" android:padding="3dip" /> </TableRow> <TableRow> <TextView android:layout_column="1" android:text="Save As..." android:padding="3dip" /> <TextView android:text="Ctrl-Shift-S" android:gravity="right" android:padding="3dip" /> </TableRow> <View android:layout_height="2dip" android:background="#FF909090" /> <TableRow> <TextView android:text="X" android:padding="3dip" /> <TextView android:text="Import..." android:padding="3dip" /> </TableRow> <TableRow> <TextView android:text="X" android:padding="3dip" /> <TextView android:text="Export..." android:padding="3dip" /> <TextView android:text="Ctrl-E" android:gravity="right" android:padding="3dip" /> </TableRow> <View android:layout_height="2dip" android:background="#FF909090" /> <TableRow> <TextView android:layout_column="1" android:text="Quit" android:padding="3dip" /> </TableRow> </TableLayout>
שימו לב איך הקוד הזה דומה למבנה של טבלת HTML.
TableLayout
דומה לרכיב ה-HTML<table>
;TableRow
הוא כמו רכיב><tr>>
; אבל בתאים אפשר להשתמש בכל סוג של רכיבView
. במשפט הזה, נעשה שימוש ב-TextView
לכל תא. בין חלק מהשורות יש גםView
בסיסי, המשמש לשרטוט קו אופקי. - צריך לוודא שבפעילות HelloTableLayout נטען את הפריסה
אמצעי תשלום
onCreate()
:Kotlin
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.main) }
Java
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); }
השיטה
setContentView(int)
טוענת את קובץ הפריסה שלActivity
, שצוין על ידי המשאב מזהה –R.layout.main
מתייחס לפריסהres/layout/main.xml
חדש. - מפעילים את האפליקציה.
אתם אמורים לראות את הנתונים הבאים: