운기의 블로그
안드로이드 - #3 ConstraintLayout 본문
저번 포스팅에 이어서 ConstraintLayout의 제약사항의 종류에 대해서 알아보자
제약사항 종류
5) Visibility behavior
해당 제약사항에 대해 알아 보기 전에 안드로이드에서 Visiblity의 속성이 Gone 일때 어떤 특징이 있는지 알아보고 가자.
안드로이드 개발자 가이드에서는 아래와 같이 설명하고 있다.
Gone은 뷰가 추가된게 아닌것처럼 완전히 숨긴다 라고 설명했다.
완전히 숨긴다라는 의미는 실제로 뷰가 차지하는 공간이 없다라는걸 의미한다.
ConstarintLayout에서 제약사항이 존재하는 뷰의 Visiblity 값이 Gone이라면 어떻게 되는지 확인해 보자.
아래의 그림처럼
A의 위젯은 부모 뷰에 제약사항이 있고, B의 위젯은 A의 end 축에 제약사항이 존재한 상태이다.
이때 A의 위젯의 Visiblity 상태가 Gone 으로 처리되면 B의 위젯의 위치는 어떻게 될까?
A가 차지하는 공간은 사라지게 되고 B의 위젯은 마진값만큼 부모뷰로 이동하게 된다.
그렇다면 A의 위젯이 사라진 후 B의 위젯의 위치가 옮겨지지 않고 현재 자리를 유지하고 싶을 때는 어떻게 해야할까?
Gone Margin값을 사용해서 위치를 고정 할 수 있다.
- layout_goneMarginStart
- layout_goneMarginEnd
- layout_goneMarginLeft
- layout_goneMarginTop
- layout_goneMarginRight
- layout_goneMarginBottom
6) Dimensions constraints
ConstraintLayout의 크기를 직접 선언해줄 수 있다.
- android:minWidth set the minimum width for the layout
- android:minHeight set the minimum height for the layout
- android:maxWidth set the maximum width for the layout
- android:maxHeight set the maximum height for the layout
위의 속성을 적용하기 위해서는 해당 위젯의 크기가 wrap_content 이여야만 한다.
언제 위의 속성을 사용하는지 알아보자
현재 텍스트뷰와 버튼이 연결되어 있다.
텍스트뷰의 start와 top,bottom은 부모뷰에 end는 버튼에 연결 되어 있다.
버튼의 start는 텍스트뷰의 end에 top, bottom은 텍스트뷰 top과 bottom에 end는 부모뷰에 연결되어있다.
이때 텍스트 뷰에 텍스트가 길어진다면 어떻게 될까?
텍스트뷰의 길이가 길어짐에 따라 textView와 버튼은 CosntraintLayout 밖으로 나가게된다.
버튼을 레이아웃 밖으로 나가지 않게 하기 위해서는 추가해주면된다.
app:layout_constrainedWidth="true"
아래 코드 추가
'안드로이드' 카테고리의 다른 글
안드로이드 - 폰트 추가하기 (0) | 2022.03.31 |
---|---|
안드로이드 - #4 ConstraintLayout (0) | 2022.03.29 |
안드로이드 - #2 ConstraintLayout (0) | 2022.03.28 |
안드로이드 - #1 ConstraintLayout (0) | 2022.03.26 |
안드로이드 12 - android:exported = "true" (0) | 2022.03.20 |