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