テーブル
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
TableLayout
は、子要素である View
を行と列の形式で表示する ViewGroup
です。
注: パフォーマンスとツールのサポートを改善するには、ConstraintLayout を使用してレイアウトを作成する必要があります。
TableLayout
は、その子を行と列の形式に配置します。TableLayout コンテナでは、行、列、セルの枠線が表示されません。表の列数は、セルが最も多い行のセル数と同じです。表のセルは空でもかまいません。HTML と同様に、複数の列にまたがるセルを設定できます。複数の列にまたがるセルを設定するには、TableRow.LayoutParams
クラスの span
フィールドを使用します。
注: 複数の行にまたがるセルは設定できません。
TableRow
オブジェクトは TableLayout の子ビューです(各 TableRow は表内の 1 つの行を定義します)。各行にはゼロ個以上のセルがあり、それぞれのセルは他の任意の種類の View によって定義されます。したがって、1 つの行のセルがさまざまな View オブジェクト(ImageView オブジェクトや TextView オブジェクトなど)で構成されることがあります。また、セルは ViewGroup オブジェクトであってもかまいません(たとえば、別の TableLayout をセルとしてネストできます)。
次のサンプル レイアウトでは、2 つの行を作成し、それぞれに 2 つのセルを含めています。その下のスクリーンショットはサンプルの結果を示しています。わかりやすくするため、セルの枠を示す点線が追加されています。
<?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)
メソッドは、リソース ID で指定された Activity
のレイアウト ファイルを読み込みます(R.layout.main
は res/layout/main.xml
レイアウト ファイルを参照します)。
- アプリを実行します。
次の画面が表示されます。
このページのコンテンツやコードサンプルは、コンテンツ ライセンスに記載のライセンスに従います。Java および OpenJDK は Oracle および関連会社の商標または登録商標です。
最終更新日 2025-07-27 UTC。
[[["わかりやすい","easyToUnderstand","thumb-up"],["問題の解決に役立った","solvedMyProblem","thumb-up"],["その他","otherUp","thumb-up"]],[["必要な情報がない","missingTheInformationINeed","thumb-down"],["複雑すぎる / 手順が多すぎる","tooComplicatedTooManySteps","thumb-down"],["最新ではない","outOfDate","thumb-down"],["翻訳に関する問題","translationIssue","thumb-down"],["サンプル / コードに問題がある","samplesCodeIssue","thumb-down"],["その他","otherDown","thumb-down"]],["最終更新日 2025-07-27 UTC。"],[],[],null,["# Table\n\n[TableLayout](/reference/android/widget/TableLayout) is a [ViewGroup](/reference/android/view/ViewGroup) that\ndisplays child [View](/reference/android/view/View) elements in rows and columns.\n\n**Note:**\nFor better performance and tooling support, you should instead [build your layout with ConstraintLayout](/training/constraint-layout).\n\n\n[TableLayout](/reference/android/widget/TableLayout) positions its children into rows and\ncolumns. TableLayout containers do not display border lines for their rows,\ncolumns, or cells. The table will have as many columns as the row with the\nmost cells. A table can leave cells empty. Cells can span multiple columns,\nas they can in HTML. You can span columns by using the `span`\nfield in the [TableRow.LayoutParams](/reference/android/widget/TableRow.LayoutParams) class.\n\n\n**Note:** Cells cannot span multiple rows.\n\n\n[TableRow](/reference/android/widget/TableRow) objects are the child views of a TableLayout\n(each TableRow defines a single row in the table). Each row has zero or more\ncells, each of which is defined by any kind of other View. So, the cells of\na row may be composed of a variety of View objects, like ImageView or\nTextView objects. A cell may also be a ViewGroup object (for example, you\ncan nest another TableLayout as a cell).\n\n\nThe following sample layout has two rows and two cells in each. The\naccompanying screenshot shows the result, with cell borders displayed as\ndotted lines (added for visual effect). \n\n```xml\n\u003c?xml version=\"1.0\" encoding=\"utf-8\"?\u003e\n\u003cTableLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:layout_width=\"match_parent\"\n android:layout_height=\"match_parent\"\n android:stretchColumns=\"1\"\u003e\n \u003cTableRow\u003e\n \u003cTextView\n android:text=\"@string/table_layout_4_open\"\n android:padding=\"3dip\" /\u003e\n \u003cTextView\n android:text=\"@string/table_layout_4_open_shortcut\"\n android:gravity=\"right\"\n android:padding=\"3dip\" /\u003e\n \u003c/TableRow\u003e\n\n \u003cTableRow\u003e\n \u003cTextView\n android:text=\"@string/table_layout_4_save\"\n android:padding=\"3dip\" /\u003e\n \u003cTextView\n android:text=\"@string/table_layout_4_save_shortcut\"\n android:gravity=\"right\"\n android:padding=\"3dip\" /\u003e\n \u003c/TableRow\u003e\n\u003c/TableLayout\u003e\n```\n\nColumns can be hidden, marked to stretch and fill the available screen space,\nor can be marked as shrinkable to force the column to shrink until the table\nfits the screen. See the [TableLayout reference](/reference/android/widget/TableLayout)\ndocumentation for more details.\n\nExample\n-------\n\n1. Start a new project named *HelloTableLayout*.\n2. Open the `res/layout/main.xml` file and insert the following: \n\n ```xml\n \u003c?xml version=\"1.0\" encoding=\"utf-8\"?\u003e\n \u003cTableLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:layout_width=\"match_parent\"\n android:layout_height=\"match_parent\"\n android:stretchColumns=\"1\"\u003e\n\n \u003cTableRow\u003e\n \u003cTextView\n android:layout_column=\"1\"\n android:text=\"Open...\"\n android:padding=\"3dip\" /\u003e\n \u003cTextView\n android:text=\"Ctrl-O\"\n android:gravity=\"right\"\n android:padding=\"3dip\" /\u003e\n \u003c/TableRow\u003e\n\n \u003cTableRow\u003e\n \u003cTextView\n android:layout_column=\"1\"\n android:text=\"Save...\"\n android:padding=\"3dip\" /\u003e\n \u003cTextView\n android:text=\"Ctrl-S\"\n android:gravity=\"right\"\n android:padding=\"3dip\" /\u003e\n \u003c/TableRow\u003e\n\n \u003cTableRow\u003e\n \u003cTextView\n android:layout_column=\"1\"\n android:text=\"Save As...\"\n android:padding=\"3dip\" /\u003e\n \u003cTextView\n android:text=\"Ctrl-Shift-S\"\n android:gravity=\"right\"\n android:padding=\"3dip\" /\u003e\n \u003c/TableRow\u003e\n\n \u003cView\n android:layout_height=\"2dip\"\n android:background=\"#FF909090\" /\u003e\n\n \u003cTableRow\u003e\n \u003cTextView\n android:text=\"X\"\n android:padding=\"3dip\" /\u003e\n \u003cTextView\n android:text=\"Import...\"\n android:padding=\"3dip\" /\u003e\n \u003c/TableRow\u003e\n\n \u003cTableRow\u003e\n \u003cTextView\n android:text=\"X\"\n android:padding=\"3dip\" /\u003e\n \u003cTextView\n android:text=\"Export...\"\n android:padding=\"3dip\" /\u003e\n \u003cTextView\n android:text=\"Ctrl-E\"\n android:gravity=\"right\"\n android:padding=\"3dip\" /\u003e\n \u003c/TableRow\u003e\n\n \u003cView\n android:layout_height=\"2dip\"\n android:background=\"#FF909090\" /\u003e\n\n \u003cTableRow\u003e\n \u003cTextView\n android:layout_column=\"1\"\n android:text=\"Quit\"\n android:padding=\"3dip\" /\u003e\n \u003c/TableRow\u003e\n \u003c/TableLayout\u003e\n ```\n\n Notice how this resembles the structure of an HTML table. The [TableLayout](/reference/android/widget/TableLayout)\n element is like the HTML `\u003ctable\u003e` element; [TableRow](/reference/android/widget/TableRow) is like\n a `\u003e\u003ctr\u003e\u003e` element;\n but for the cells, you can use any kind of [View](/reference/android/view/View) element. In this example, a\n [TextView](/reference/android/widget/TextView) is used for each cell. In between some of the rows, there is also a\n basic [View](/reference/android/view/View), which is used to draw a horizontal line.\n3. Make sure your *HelloTableLayout* Activity loads this layout in the [onCreate()](/reference/android/app/Activity#onCreate(android.os.Bundle)) method: \n\n ### Kotlin\n\n ```kotlin\n override fun onCreate(savedInstanceState: Bundle?) {\n super.onCreate(savedInstanceState)\n setContentView(R.layout.main)\n }\n ```\n\n ### Java\n\n ```java\n public void onCreate(Bundle savedInstanceState) {\n super.onCreate(savedInstanceState);\n setContentView(R.layout.main);\n }\n ```\n\n The [setContentView(int)](/reference/android/app/Activity#setContentView(int)) method loads the\n layout file for the [Activity](/reference/android/app/Activity), specified by the resource\n ID --- `R.layout.main` refers to the `res/layout/main.xml` layout\n file.\n4. Run the application.\n\nYou should see the following:"]]