티스토리 뷰
안드로이드 API14부터 GridLayout이 공개가 되었습니다.
기존의 중첩되던 Layout구조를 획기적으로 줄일수 있어서, 메모리측면이나 성능측면에서 많은 개선을 하였다고 합니다.
사용방법과 문제점등을 보도록 하죠.
기본적으로 API14에서 나오기는 하였지만, 구글에서 개발자들에게 잘 사용하라는 의미로 V7라이브러리에 포함을 시켜서 배포하였습니다.
v7라이브러리에 포함되어 있으며 사용방법은 현재 개발자라면 모두들 다 안다고 생각을 하고, 설명을 하지 않도록 합니다.
extras\android\support\v7\gridlayout 이곳에 존재하므로, 포함시켜서 사용합니다.
저는 라이브러리 프로젝트를 포함해서 사용할것이므로, 상위버전으로 개발하시는 분들은 android.support.v7.widget. 부분을 없애주세요.
물론 xmlns:gridlayout이 부분도 필요가 없습니다. android로 대체를 해주시길.
1. 기본구조
<android.support.v7.widget.GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:gridlayout="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
gridlayout:columnCount="3"
gridlayout:rowCount="2">
<Button android:text="@string/hello_world"/>
<Button android:text="@string/hello_world"/>
<Button android:text="@string/hello_world"/>
<Button android:text="@string/hello_world"/>
<Button android:text="@string/hello_world"/>
<Button android:text="@string/hello_world"/>
</android.support.v7.widget.GridLayout>
2. GridLayout의 속성
- orientation : 셀을 채우는 순서를 설정. horizontal / vertical
- rowCount : 행의 개수를 지정
- columnCount : 열의 개수를 지정
- alignmentMode : 가장 여백이 큰 뷰 기준으로 정렬 기준을 지정.
- alignBounds : 가장 여백이 큰 자식 뷰를 중심으로 정렬
- alignMargins : 지정된 View의 margin만 지정
- rowOrderPreserved : false일 경우 행의 순서를 무시할 수 있음.
- columnOrderPreserved : false일 경우 열의 순서를 무시할 수 있음.
- useDefaultMargins : 기본적으로 들어간 상하좌우 여백을 넣어줌
3. GridLayout의 LayoutParams속성
- layout_gravity : 셀 영역 내 자식 뷰의 위치를 설정. 기존의 gravity와 같으나, 세가지 속성이 함께 포함됨.
- fill_horizontal : 수평 셀의 영역에 뷰의 크기를 가득 채움
- fill_vertical : 수직 셀의 영역에 뷰의 크기를 가득 채움
- fill : 수평/수직 셀의 영역에 뷰의 크기를 가득 채움
- layout_row : 자식 뷰의 행 위치를 설정
- layout_column : 자식 뷰의 열 위치를 설정
- layout_rowSpan : 자식 뷰의 행 위치에서 병합할 셀 개수를 지정
- layout_columnSpan : 자식 뷰의 열 위치에서 병합할 셀 개수를 지정
4. Space
- 기존의 방식에서 공간을 띄워서 사용하려고 일반 View를 넣어서 사용을 많이하였다. 이런 부분을 채워주도록 Space라는 View가 나오게됨.
- V7 gridlayout에 포함되어 있습니다.
4. 장점
TableLayout구조의 Layout을 구성할 경우에, 지금까지 TableLayout을 이용하여서, 중첩된 구조를 만들었습니다.
이러한 구조를 하나의 Layout안에 두면서, 간소화가 되면서, 메모리측면 성능측면에 개선이 되었다고 합니다.
5. 단점
기존의 우리가 사용하던 Layout들과 비교를 하였을 경우에, 조금 간소화되기는 하였으나,
방식이 약간 변경되면서 사용하는데 어려움이 있으며, 적용이 어려운 부분도 존재합니다.
예) View를 구성할때 동적으로 변화가 되어서, 화면의 크기보다 크게 영역을 잡게 될 경우에는 다른 View들을 밀어버리는 현상이 발생함.
6. 결론
만약 View의 구조가 많이 중첩이 된다고 한다면, 한번 사용해볼 마음은 가져봐도 좋다.
그렇지만 프로젝트의 크기가 커서 dex count에 부딪히게 된다면, 사용을 금하고.
꼭 만능은 아니라는 생각을 가지고, 다른 Layout과 혼용해서 사용하도록 한다.
참고Blog
http://android-developers.blogspot.kr/2011/11/new-layout-widgets-space-and-gridlayout.html
'Mobile > Android' 카테고리의 다른 글
[Android]border 만들기 (0) | 2015.03.30 |
---|---|
[Android]줄간격 (0) | 2015.03.30 |
[Android]MeasureSpec (0) | 2015.03.27 |
[Android]ActionBar 기초 (0) | 2015.03.27 |
[Android]레퍼런스 4.4이상 버전에서 notification battery에 percent표시 (0) | 2015.03.27 |
- Total
- Today
- Yesterday
- Xcode
- Spring
- centos8
- ios
- enum
- CentOS
- intellij
- Windows
- Linux
- golang
- Java
- MySQL
- php
- go
- Kotlin
- SWIFT
- github
- docker
- rxswift
- Gradle
- git
- cocoapods
- nodejs
- Python
- Codable
- android
- tomcat
- ubuntu
- windows10
- war
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |