טבלה

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 לקבלת פרטים נוספים.

דוגמה

  1. מתחילים פרויקט חדש בשם HelloTableLayout.
  2. פותחים את הקובץ 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 בסיסי, המשמש לשרטוט קו אופקי.

  3. צריך לוודא שבפעילות 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 חדש.

  4. מפעילים את האפליקציה.

אתם אמורים לראות את הנתונים הבאים: