레이아웃의 종류

레이아웃에서 자주 사용되는 속성
- orientation : 레이아웃 안에 배치할 위젯의 수직 또는 수평 방향을 설정
- gravity : 레이아웃 안에 배치할 위젯의 정렬 방향을 좌측, 우측, 중앙으로 설정
- padding : 레이아웃 안에 배치할 위젯의 여백을 설정
- layout_weight : 레이아웃이 전체 화면에서 차지하는 공간의 가중값을 설정, 여러 개의 레이아웃이 중복될 때 주로 사용
- baselineAligned : 레이아웃 안에 배치할 위젯을 보기 좋게 정렬
Linear Layout

grabity 속성에 좌우|상하 값을 주면 벽으로 따라 붙습니다.

이렇게.

gravity가 아닌 layout_gravity라는 속성이 있는데 이 속성은 부모의 위치를 따라갑니다.

이렇게.
Grid Layout
테이블과 비슷한 형태의 격자형 레이아웃입니다.

GridLayout에 rowCount(2행), columnCount(4열)를 주었습니다.
layout_height는 컨텐츠의 길이에 따라 동적으로 변화하도록 wrap_content 속성으로 변경해줍니다.

버튼 8개를 만들어줍니다.

색칠된 부분을 rowSpan(행 병합)과 columnSpan(열 병합)으로 병합합니다.
<Button android:layout_row="0" android:layout_column="0" android:text="1" android:layout_rowSpan="2" android:layout_gravity="fill_vertical"/> <Button android:layout_row="0" android:layout_column="1" android:text="2" android:layout_columnSpan="2" android:layout_gravity="fill_horizontal"/> <Button android:text="3" android:layout_row="0" android:layout_column="3" /> <Button android:text="4" android:layout_row="1" android:layout_column="1" /> <Button android:text="5" android:layout_row="1" android:layout_column="2" /> <Button android:text="6" android:layout_row="1" android:layout_column="3" />
layout_row(행)와 layout_column(열)은 인덱스 번호,
rowSpan(행)과 columnSpan(열)은 병합할 인덱스,
layout_gravity의 fill_vertical(수직), fill_horizontal(수평)은 채워질 방향을 의미합니다.

위와 같은 출력 화면을 보실 수가 있습니다.
그리드 레이아웃으로 계산기 화면 구현하기
<?xml version="1.0" encoding="utf-8"?> <GridLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" android:rowCount="9" android:columnCount="5"> <EditText android:id="@+id/etNum1" android:textSize="20sp" android:layout_row="0" android:layout_column="0" android:layout_columnSpan="5" android:layout_gravity="fill_horizontal" android:hint="숫자1" android:layout_margin="5dp"/> <EditText android:id="@+id/etNum2" android:textSize="20sp" android:layout_row="1" android:layout_column="0" android:layout_columnSpan="5" android:layout_gravity="fill_horizontal" android:hint="숫자2" android:layout_margin="5dp"/> <Button android:id="@+id/btnNum0" android:text="0" android:textSize="20sp" android:layout_row="2" android:layout_column="0" android:layout_width="80dp" android:layout_height="wrap_content"/> <Button android:id="@+id/btnNum1" android:text="1" android:textSize="20sp" android:layout_row="2" android:layout_column="1" android:layout_width="80dp" android:layout_height="wrap_content"/> <Button android:id="@+id/btnNum2" android:text="2" android:textSize="20sp" android:layout_row="2" android:layout_column="2" android:layout_width="80dp" android:layout_height="wrap_content"/> <Button android:id="@+id/btnNum3" android:text="3" android:textSize="20sp" android:layout_row="2" android:layout_column="3" android:layout_width="80dp" android:layout_height="wrap_content"/> <Button android:id="@+id/btnNum4" android:text="4" android:textSize="20sp" android:layout_row="2" android:layout_column="4" android:layout_width="80dp" android:layout_height="wrap_content"/> <Button android:id="@+id/btnNum5" android:text="5" android:textSize="20sp" android:layout_row="3" android:layout_column="0" android:layout_width="80dp" android:layout_height="wrap_content"/> <Button android:id="@+id/btnNum6" android:text="6" android:textSize="20sp" android:layout_row="3" android:layout_column="1" android:layout_width="80dp" android:layout_height="wrap_content"/> <Button android:id="@+id/btnNum7" android:text="7" android:textSize="20sp" android:layout_row="3" android:layout_column="2" android:layout_width="80dp" android:layout_height="wrap_content"/> <Button android:id="@+id/btnNum8" android:text="8" android:textSize="20sp" android:layout_row="3" android:layout_column="3" android:layout_width="80dp" android:layout_height="wrap_content"/> <Button android:id="@+id/btnNum9" android:text="9" android:textSize="20sp" android:layout_row="3" android:layout_column="4" android:layout_width="80dp" android:layout_height="wrap_content"/> <Button android:id="@+id/btnAdd" android:text="더하기" android:textSize="20sp" android:layout_row="4" android:layout_column="0" android:layout_columnSpan="5" android:layout_gravity="fill_horizontal" android:layout_margin="5dp"/> <Button android:id="@+id/btnSub" android:text="빼기" android:textSize="20sp" android:layout_row="5" android:layout_column="0" android:layout_columnSpan="5" android:layout_gravity="fill_horizontal" android:layout_margin="5dp"/> <Button android:id="@+id/btnMul" android:text="곱하기" android:textSize="20sp" android:layout_row="6" android:layout_column="0" android:layout_columnSpan="5" android:layout_gravity="fill_horizontal" android:layout_margin="5dp"/> <Button android:id="@+id/btnDiv" android:text="나누기" android:textSize="20sp" android:layout_row="7" android:layout_column="0" android:layout_columnSpan="5" android:layout_gravity="fill_horizontal" android:layout_margin="5dp"/> <TextView android:id="@+id/tvResult" android:text="계산 결과 : " android:textSize="20sp" android:textColor="#FF0000" android:layout_row="8" android:layout_column="0" android:layout_columnSpan="5" android:layout_gravity="fill_horizontal" android:layout_margin="5dp"/> </GridLayout>

'BackEnd > Android' 카테고리의 다른 글
그리드 레이아웃으로 계산기 구현하기 (0) | 2020.06.16 |
---|---|
for문의 초기변수를 내부에서 사용하는 방법 (0) | 2020.06.16 |
간단한 계산기 구현하기 (0) | 2020.06.08 |
속성 - margin, padding, visibility (0) | 2020.06.07 |
위젯 - TextView, EditText (0) | 2020.06.07 |