티스토리 뷰

테이블레이아웃은 엑셀시트 처럼 격자 형태의 행과 열로 구성된다.



테이블레이아웃 엘리먼트 안에는 TextRow라는 엘리먼트가 들어 갈 수 있는데, 하나의 TextRow는 하나의 행(가로)을 나타낸다. 그리고 하나의 TextRow안에 쌓이는 뷰는 Horizontal 방향으로 배치된다.



테이블레이아웃 엘리먼트에서 설정 할 수 있는 대표적인 속성으로 shrinkColumns와 stretchColumns가 있다.

shrinkColumns :  부모 컨테이너의 폭에 맞추도록 각 열의 폭을 강제로 축소

stretchColumns : 부모 컨테이너의 공간을 채우기 위해 지정된 뷰의 열의 폭을 자동 조절해서 늘린다.



테스트

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:stretchColumns="1,2"
    tools:context="com.example.choonie.relativelayoutex.TableLayoutActivity">


    <TableRow>

        <Button
            android:id="@+id/button1"
            android:text="로우1버튼1" />

        <Button
            android:id="@+id/button2"
            android:text="로우1버튼2" />

        <Button
            android:id="@+id/button3"
            android:text="로우1버튼3" />

    </TableRow>

    <TableRow>

        <Button
            android:id="@+id/button4"
            android:text="로우2버튼1" />

        <Button
            android:id="@+id/button5"
            android:text="로우2버튼2" />

    </TableRow>


</TableLayout>

TableRow의 높이값인 TableLayout의 layout_height는 항상 wrap_content로 화면을 꽉 채울 수 없다. 그래서 match_parent는 소용없다.

반대로 layout_width는 match_parent로 가로 공간을 꽉 채우게 된다.




결과화면


TableRow가 하나의 행을 나타내고, 다시 TableRow안에 뷰가 열을 나타낸다고 하였다. HTML을 알고 있다면 TableRow가 <tr>역할을 하고 그 안의 뷰가 <td>역할을 한다고 생각하면 쉽다.


stretchColums는 콤마,로 구분해서 지정할 수 있다. TableRow의 안에서 인덱스 순서가 0부터 시작 한다. 위 코드에서 지정하고 있는 값은 1, 2 즉 두번째 Button뷰와 세번째 Button뷰를 지정하고 있다. 

그래서 결과화면을 보면 이 두 버튼이 공평한 크기로 부모 컨테이너의 레이아웃 크기에 맞게 가로 폭이 커진 것을 알 수 있다.

'Android > 정리' 카테고리의 다른 글

화면 이동과 데이터 전달  (0) 2016.05.09
레이아웃 인플레이션  (0) 2016.05.09
FrameLayout 프레임레이아웃  (0) 2016.05.03
layout_gravity와 gravity속성 (뷰의 정렬)  (0) 2016.04.29
안드로이드 개발  (0) 2016.04.28
Comments
최근에 올라온 글
최근에 달린 댓글
TAG
more
Total
Today
Yesterday