일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Lottie
- 화면전환
- 코코아팟
- 액티비티
- cocoapods
- 앱빌드
- API Level
- LayoutEditor
- ios
- gradle
- 리소스
- 프로젝트생성
- kotlin
- SWIFT
- 코틀린
- DataBinding
- InputTypes
- 데이터바인딩
- ImageView
- 스택관리
- linearlayout
- lateInit
- xcworkspace
- 안드로이드
- Constraint
- button
- Android
- 프래그먼트
- Drawable
- EditText
- Today
- Total
코코아의 우당탕탕 개발일지
[Android/Kotlin] 안드로이드 학습 2.3 - Layout Editor을 이용한 ConstraintLayout 본문
[Android/Kotlin] 안드로이드 학습 2.3 - Layout Editor을 이용한 ConstraintLayout
Cocoa's Story 2022. 11. 1. 16:01이번에 다룰 내용은 ConstraintLayout이다. 내가 안드로이드를 시작했을 때 가장 처음 배웠던 레이아웃이고, 그만큼 많이 활용된다.
Android Kotlin Fundamentals: 02.3 ConstraintLayout using the Layout Editor | Android Developers
In this codelab you learn how to use ConstraintLayout in your Android app to create large and complex layouts with a flat view hierarchy.
developer.android.com
ConstraintLayout
ConstraintLayout는 ViewGroup 유연한 방식으로 자식 뷰의 위치와 크기를 조정할 수 있는 기능이다. ConstraintLayout을 사용하면 중첩된 뷰 그룹 말고 평면 뷰 계층으로 크고 복잡한 레이아웃을 만들 수 있다. ConstraintLayout을 빌드하려면 레이아웃 편집기를 사용하여 제약 조건을 추가하고 드래그앤드랍할 수 있다. XML을 편집할 필요가 없다.
제약 조건 은 두 UI 요소 간의 연결 또는 정렬이다. 각 제약 조건은 한 뷰를 다른 뷰, 상위 레이아웃 또는 보이지 않는 가이드라인에 연결하거나 정렬한다. ConstraintLayout에서 적어도 하나의 수평 및 수직 제약 조건을 정의하여 뷰를 배치합니다.
위 사진의 1: 수평(Horizontal) 제약 조건, 2: 수직(Vertical) 제약 조건
위의 사진처럼 Toolbar에서 기본 여백을 변경할 수 있다. Default Margin을 16dp로 설정하면, 새로운 제약이 이 margin으로 생성되게 된다. 즉, 새로운 제약을 잡아줄 때 margin을 추가하지 않아도 된다.
View Inspector
뷰 인스펙터는 Attribute 창의 일부이다. 뷰 인스펙터에서 제약, 제약 조건 유형, 제약조건 편향 및 뷰 여백과 같은 특성을 조정할 수 있다.
* 뷰 인스펙터는 ConstraintLayout 안에 있는 뷰에서만 사용가능하다.
Constraint bias
제약 편향, Constraint bias는 수평 및 수직 축을 따라 뷰 요소를 배치한다. 기본적으로 뷰는 편향이 50%인 두 제약 조건 사이의 중앙에 있다.
편향을 조정하려면 뷰 인스펙터에서 bias slider를 드래그할 수 있다 . 바이어스 슬라이더를 드래그하면 축을 따라 보기의 위치가 변경된다.
TextView의 제약 조건 및 여백 조정
뷰 인스펙터에서 제약 조건 화살표의 의미를 살펴보자. 이곳에서 제약의 유형을 설정할 수 있다.
TextView 스타일 지정
fontFamily를 roboto로 설정, 리소스에 사용할 값들을 넣는다. TextView에 사용할 스타일 지정도 해준다.
두 번째 TextView 추가
Palette 창에서 TextView를 디자인 편집기 미리보기로 직접 드래그. box_one_text 아래에 텍스트 뷰를 왼쪽 여백에 맞춰 배치.
저런 식으로 상하좌우의 제약을 다른 뷰와 잡아 걸어줄 수 있음.
두 번째 텍스트의 속성은 이렇게 설정해준다.
이 경우 텍스트 보기의 높이와 너비에 고정 크기(130dp)를 할당했다. 안드로이드에서는 뷰가 모든 장치와 레이아웃 에서 항상 고정된 크기를 가져야 하는 경우에만 높이와 너비에 고정 크기를 할당하기를 권장한다.
중요: 실제 앱을 개발할 때는 가능하면 UI 요소의 높이와 너비에 대해 유연한 제약 조건을 사용하세요. 예를 들어 match_constraint 또는 wrap_content를 사용합니다. 앱에 고정된 크기의 UI 요소가 많을수록 다양한 화면 구성에 대한 레이아웃 적응도가 떨어집니다.
TextView 뷰 체인 만들기
chain이란 양방향 제약조건으로 서로 연결된 뷰의 그룹이다. 체인 내의 뷰는 서로 수직적, 혹은 수평적으로 배치될 수 있다.
Head of the chain
체인의 첫 번째 뷰를 체인 헤드 라고 한다 . 체인의 헤드에 설정된 속성은 체인의 모든 뷰를 제어, 위치 지정 및 배포한다. 수평 체인의 경우 가장 왼쪽 뷰가 헤드이고, 수직 체인의 경우 맨 위 뷰가 헤드이다. 위의 두 다이어그램 각각에서 "A"를 체인 헤드라 할 수 있다.
Chain style
체인 스타일은 체인 뷰가 펼쳐지고 정렬되는 방식을 정의한다. 체인 스타일 속성을 지정하거나, 가중치를 추가하거나, 뷰에 편향을 설정하여 체인의 스타일을 지정할 수 있다.
- Spread: 기본 스타일. 여백을 고려한 후 뷰가 사용 가능한 공간에 고르게 분산.
- Spread inside: 첫 번째 및 마지막 뷰는 체인의 각 끝에 있는 상위 뷰에 연결. 나머지 뷰는 사용 가능한 공간에 고르게 분산.
- Packed: 여백을 고려한 후 뷰가 함께 패킹됨. 이후 체인 헤드 뷰의 바이어스를 변경하여 전체 체인의 위치 조정 가능
- Weighted: layout_constraintHorizontal_weight 또는 layout_constraintVertical_weight 속성에 설정된 값을 기반으로 모든 공간을 채우도록 보기의 크기가 조정됨. 예를 들어, 세 개의 뷰 A, B, C가 포함된 체인을 상상해 보자. 뷰 A는 가중치 1을 사용하고 뷰 B와 C는 각각 가중치 2를 사용함. 뷰 B와 C가 차지하는 공간은 뷰 A의 두 배이다.
<chain에 chain style을 설정하는 방법>
1. 체인 헤드에 layout_constraintHorizontal_chainStyle또는 layout_constraintVertical_chainStyle 속성을 설정 (디자인 편집기)
2. XML 코드에 체인 스타일을 추가
// Horizontal spread chain
app:layout_constraintHorizontal_chainStyle="spread"
// Vertical spread inside chain
app:layout_constraintVertical_chainStyle="spread_inside"
// Horizontal packed chain
app:layout_constraintHorizontal_chainStyle="packed"
TextView에 Click Handler 추가
style에서 배경색을 white로 변경. 사용자가 뷰를 클릭하면 색이 표시되도록 설정
<item name="android:background">@android:color/white</item>
Learn more
Udacity course:
Android developer documentation:
- Build a Responsive UI with ConstraintLayout
- ConstraintLayout
- Build a UI with Layout Editor
- Understanding the performance benefits of ConstraintLayout
Videos:
'[Android] > 학습' 카테고리의 다른 글
[Android/Kotlin] 학습과정 5.1 - ViewModel (0) | 2022.11.02 |
---|---|
[Android/Kotlin] 안드로이드 학습 2.4 - Data Binding (0) | 2022.11.01 |
[Android/Kotlin] 안드로이드 학습 2.2 - 사용자 상호작용 (0) | 2022.11.01 |
[Android/Kotlin] 안드로이드 학습 2.1 - Layout Editor을 이용한 LinearLayout (0) | 2022.10.31 |
[Android/Kotlin] 안드로이드 학습 1.3 - 이미지 리소스 및 호환성 (0) | 2022.10.27 |