summaryrefslogtreecommitdiffstats
path: root/docs/html/guide/topics/ui/layout/grid.jd
blob: 52f453bb6a3398dcfc44b995e1a1365689cec2e0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
page.title=Table
parent.title=Layouts
parent.link=layout-objects.html
@jd:body

<div id="qv-wrapper">
<div id="qv">
<h2>In this document</h2>
  <ol>
    <li><a href="#example">Example</a></li>
  </ol>
  <h2>Key classes</h2>
  <ol>
  <li>{@link android.widget.TableLayout}</li>
  <li>{@link android.widget.TableRow}</li>
  <li>{@link android.widget.TextView}</li>
  </ol>
</div>
</div>
<p>{@link android.widget.TableLayout} is a {@link android.view.ViewGroup} that
displays child {@link android.view.View} elements in rows and columns.</p>


<img src="{@docRoot}images/ui/gridlayout.png" alt="" />

<p>{@link android.widget.TableLayout} positions its children into rows
    and columns. TableLayout containers do not display border lines for their rows, columns,
    or cells. The table will have as many columns as the row with the most cells. A table can leave
cells empty, but cells cannot span columns, as they can in HTML.</p>
<p>{@link android.widget.TableRow} objects are the child views of a TableLayout
(each TableRow defines a single row in the table).
Each row has zero or more cells, each of which is defined by any kind of other View. So, the cells of a row may be
composed of a variety of View objects, like ImageView or TextView objects.
A cell may also be a ViewGroup object (for example, you can nest another TableLayout as a cell).</p>
<p>The following sample layout has two rows and two cells in each. The accompanying screenshot shows the 
result, with cell borders displayed as dotted lines (added for visual effect). </p>

<table class="columns">
    <tr>
        <td>
        <pre>
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:stretchColumns="1">
    &lt;TableRow>
        &lt;TextView
            android:text="@string/table_layout_4_open"
            android:padding="3dip" />
        &lt;TextView
            android:text="@string/table_layout_4_open_shortcut"
            android:gravity="right"
            android:padding="3dip" />
    &lt;/TableRow>

    &lt;TableRow>
        &lt;TextView
            android:text="@string/table_layout_4_save"
            android:padding="3dip" />
        &lt;TextView
            android:text="@string/table_layout_4_save_shortcut"
            android:gravity="right"
            android:padding="3dip" />
    &lt;/TableRow>
&lt;/TableLayout>
</pre></td>
        <td><img src="{@docRoot}images/table_layout.png" alt="" style="margin:0" /></td>
    </tr>
</table>

<p>Columns can be hidden, marked to stretch and fill the available screen space,
    or can be marked as shrinkable to force the column to shrink until the table
    fits the screen. See the {@link android.widget.TableLayout TableLayout reference} 
documentation for more details. </p>


<h2 id="example">Example</h2>
<ol>
  <li>Start a new project named <em>HelloTableLayout</em>.</li>
  <li>Open the <code>res/layout/main.xml</code> file and insert the following:
<pre>
&lt;?xml version="1.0" encoding="utf-8"?>
&lt;TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:stretchColumns="1">

    &lt;TableRow>
        &lt;TextView
            android:layout_column="1"
            android:text="Open..."
            android:padding="3dip" />
        &lt;TextView
            android:text="Ctrl-O"
            android:gravity="right"
            android:padding="3dip" />
    &lt;/TableRow>

    &lt;TableRow>
        &lt;TextView
            android:layout_column="1"
            android:text="Save..."
            android:padding="3dip" />
        &lt;TextView
            android:text="Ctrl-S"
            android:gravity="right"
            android:padding="3dip" />
    &lt;/TableRow>

    &lt;TableRow>
        &lt;TextView
            android:layout_column="1"
            android:text="Save As..."
            android:padding="3dip" />
        &lt;TextView
            android:text="Ctrl-Shift-S"
            android:gravity="right"
            android:padding="3dip" />
    &lt;/TableRow>

    &lt;View
        android:layout_height="2dip"
        android:background="#FF909090" />

    &lt;TableRow>
        &lt;TextView
            android:text="X"
            android:padding="3dip" />
        &lt;TextView
            android:text="Import..."
            android:padding="3dip" />
    &lt;/TableRow>

    &lt;TableRow>
        &lt;TextView
            android:text="X"
            android:padding="3dip" />
        &lt;TextView
            android:text="Export..."
            android:padding="3dip" />
        &lt;TextView
            android:text="Ctrl-E"
            android:gravity="right"
            android:padding="3dip" />
    &lt;/TableRow>

    &lt;View
        android:layout_height="2dip"
        android:background="#FF909090" />

    &lt;TableRow>
        &lt;TextView
            android:layout_column="1"
            android:text="Quit"
            android:padding="3dip" />
    &lt;/TableRow>
&lt;/TableLayout>
</pre>
<p>Notice how this resembles the structure of an HTML table. The {@link android.widget.TableLayout}
element is like the HTML <code>&lt;table&gt;</code> element; {@link android.widget.TableRow} is like
a <code>>&lt;tr>&gt;</code> element;
but for the cells, you can use any kind of {@link android.view.View} element. In this example, a
{@link android.widget.TextView} is used for each cell. In between some of the rows, there is also a
basic {@link android.view.View}, which is used to draw a horizontal line.</p>

</li>
<li>Make sure your <em>HelloTableLayout</em> Activity loads this layout in the
{@link android.app.Activity#onCreate(Bundle) onCreate()} method:
<pre>
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
}
</pre>
<p>The {@link android.app.Activity#setContentView(int)} method loads the
layout file for the {@link android.app.Activity}, specified by the resource
ID &mdash; <code>R.layout.main</code> refers to the <code>res/layout/main.xml</code> layout
file.</p>
</li>
<li>Run the application.</li>
</ol>
<p>You should see the following:</p>
<img src="images/hello-tablelayout.png" width="150px" />