جدول

TableLayout یک ViewGroup است که عناصر فرزند View را در ردیف‌ها و ستون‌ها نمایش می‌دهد.

توجه: برای عملکرد بهتر و پشتیبانی ابزار، باید به‌جای آن چیدمانتان را با ConstraintLayout بسازید.

TableLayout فرزندانش را در ردیف‌ها و ستون‌ها قرار می‌دهد. ظروف TableLayout خطوط مرزی را برای ردیف‌ها، ستون‌ها، یا سلول‌هایشان نمایش نمی‌دهند. جدول به تعداد ستون‌های ردیفی که بیشترین سلول را دارد ستون خواهد داشت. جدول می‌تواند سلول‌های خالی داشته باشد. سلول‌ها می‌توانند چندین ستون را دربرگیرند، همان‌طور که در HTML می‌توانند. بااستفاده از فیلد span در کلاس TableRow.LayoutParams می‌توانید ستون‌ها را گسترش دهید.

توجه: سلول‌ها نمی‌توانند در چند ردیف گسترده شوند.

اشیاء TableRow نماهای فرزند TableLayout هستند (هر TableRow یک ردیف را در جدول تعریف می‌کند). هر ردیف صفر یا چند سلول دارد که هرکدام با نوع دیگری از View تعریف می‌شود. بنابراین، سلول‌های یک ردیف ممکن است از انواع مختلفی از اشیاء View، مانند اشیاء ImageView یا TextView تشکیل شده باشند. یک سلول همچنین می‌تواند یک شی ViewGroup باشد (برای مثال، می‌توانید یک TableLayout دیگر را به‌عنوان یک سلول تودرتو کنید).

نمونه چیدمان زیر دو ردیف و دو سلول در هر ردیف دارد. نماگرفت همراه نتیجه را نشان می‌دهد، و حاشیه‌های سلول به‌صورت خط‌چین نمایش داده شده است (برای جلوه بصری اضافه شده است).

<?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 مانند عنصر اچ‌تی‌ام‌ال <table> است؛ TableRow مانند عنصر ><tr>> است؛ اما برای سلول‌ها، می‌توانید از هر نوع عنصر View استفاده کنید. در این مثال، از TextView برای هر سلول استفاده شده است. بین برخی‌از ردیف‌ها، یک View پایه نیز وجود دارد که برای رسم خط افقی استفاده می‌شود.

  3. مطمئن شوید که «فعالیت» HelloTableLayout شما این چیدمان را در روش onCreate() بار می‌کند:

    کاتلین

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.main)
    }

    جاوا

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

    روش setContentView(int) فایل چیدمان را برای Activity بار می‌کند که با شناسه منبع مشخص شده است — R.layout.main به فایل چیدمان res/layout/main.xml اشاره دارد.

  4. برنامه را اجرا کنید.

باید موارد زیر را ببینید: