안드로이드 TableLayout
TableLayout의 상속 계층도는 다음과 같습니다.
java.lang.Object
└─ android.view.View
└─android.view.ViewGroup
└─android.widget.LinearLayout
└─android.widget.TableLayout
위의 그림에서 보시는것 처럼 LinearLayout은 View와 ViewGroup를 상속받고 있습니다.
( 혹시 VIew와 ViewGroup에 대해 궁금하신분은 [ View강의 보기 ] 를 클릭해 주세요. )
그러하니 여러분들은
"아 View를 상속받았으니 화면에 보여질수 있겠구나!"
"아~ ViewGroup를 상속받았으니 다른 View를 포함할 수 있겠구나!"
이런 생각을 하시면 됩니다.
TableLayout은 바둑판 모양의 표형태로 뷰를 배치하는 레이아웃입니다.
TableLayout은 줄(행)과 칸(열)이라는 개념을 가지고 있습니다.
안드로이드에서 줄(행)은 TableRow로 라는 클래스를 이용합니다. 이 레이아웃은 한칸안에 하나의 뷰가 들어 가게 됩니다.
이 레이아웃은 좀 특이한 속성을 가지고 있습니다.
-
자식 뷰는 특정한 폭(layout_width)를 가질수 없으며 폭(Width)는 항상 MATCH_PARENT 입니다.
-
하지만 높이(layout_height)의 속성은 정의가 가능합니다. 기본값은 WRAP_CONTENT로 되어 있습니다.
-
TableRow의 높이(height)는 항상 WRAP_CONTENT를 가집니다.
좀 특이하기는 합니다.
간단한 예제로 살펴보도록 하겠습니다.
res/layout/main.xml
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_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>
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
결과를 한번 보겠습니다.
궁금하신 내용은 댓글로 달아 주세요.^^
덧글]
개발하시다가 온몸이 찌뿌둥하시면 아래 동영상을 따라 스트레칭을 한번하세요.
1. 목디스크 예방을 위한 목운동 ☞ http://jwandroid.tistory.com/192
2. 손목터널증후군 손목스트레칭으로 예방합시다. ☞ http://jwandroid.tistory.com/193
3. 개발자 여러분 허리를 세우세요 - 척추체조 1번 ☞ http://jwandroid.tistory.com/194
4. 개발자 여러분 허리를 세우세요 - 척추체조 2번 ☞ http://jwandroid.tistory.com/195
5. 개발자 여러분 허리를 세우세요 - 척추체조 3번 ☞ http://jwandroid.tistory.com/196
6. 개발자 여러분 허리를 세우세요 - 척추체조 4번 ☞ http://jwandroid.tistory.com/197
'프로그래밍 > 안드로이드' 카테고리의 다른 글
[안드로이드/Andoird] 안드로이드 액티비티와 태스크 (0) | 2012.05.10 |
---|---|
[안드로이드 팁] 구문분석 오류 패키지를 구문 분석하는 중 문제가 발생했습니다. (0) | 2012.05.10 |
[안드로이드/Android] android:launchMode="singleTask" 와 액티비티간의 통신, startActivityForResult 에 대한 여러가지 삽질들. (0) | 2012.05.10 |
[안드로이드] 안드로이드 C2DM 구현하기 (0) | 2012.05.10 |
[안드로이드/Android] 안드로이드 레이아웃 FrameLayout (0) | 2012.05.09 |
[안드로이드/Android] 안드로이드 레이아웃 RelativeLayout (4) | 2012.05.09 |
[안드로이드/Android]안드로이드 레이아웃 LinearLayout (0) | 2012.05.09 |
[안드로이드/Android]안드로이드 레이아웃 (2) | 2012.05.09 |
[안드로이드] 안드로이드 Failed to install timeout (1) | 2012.05.08 |