본문 바로가기

IT 공부/안드로이드 스튜디오

안드로이드 스튜디오 constraint layout

 

이번에 안드로이드 스튜디오로 간단한 어플을 만들기로 계획을 세웠다.

하지만 처음부터 순탄하지않았다 역시..  안드로이드 스튜디오 설치하고 정상 작동하는데까지 정말 고생을 많이했다.. 

다시생각해도 정말 끔찍할.. 왠만한 mac 안드로이드 스튜디오 오류는 이제 안보고도 기억이 날정도,, 

어찌 저찌하여 에뮬이 처음 돌아갔을때 너무나도 기뻤다 !

 

에뮬이 성공적으로 실행이 되고나서 간단한 버튼 구성부터 잘되나 보려고 했는데? 

 

세로 버튼 3개 배치 

 

 

 

 

 

위의 사진처럼 세로로 버튼 3개를 배치하였지만 어플을 실행해보면 버튼이 겹치거나 배치한대로 그림이 생성되지않아 검색하여 공부를 하였다. 

먼저 이것의 이름은 ConstraintLayout이다.

 

 ConstraintLayout이란? 복잡한 레이아웃을 단순한 계층 구조를 이용하여 표현할 수 있는 ViewGroup. 즉 복잡한 계층구조로 레이아웃을 구성하는 방식에서 자유로워질 수 있으며

자식 view간 상호 관계를 정의 할수 있다고 한다, 여기서 css을 잠깐배워서 이해 하기

수월했다.

 

 

 

안드로이드 스튜디오로 다시 들어오니  Button 3개에 빨간아이콘이 떠있고 딱봐도 오류가 뜨는 것임을 알 수 있다.

Missing Constraints in ConstraintLayout , 제약 조건 레이아웃에 제약조건이 누락된다라고 뜬다. 

이는 말그대로 제약조건을 걸지않아서 생긴 오류이다. 

 

ConstraintLayout에서  View의 위치를 정의하려면 보기의 가로 및 세로 제약조건을 각각 하나 이상 추가해야 한다. 
각 제약조건은 세로 또는 가로 축을 따라 View의 위치를 정의한다.

그 연결되는 것을 기점으로 자리를 잡는 구조로 되어있으며 상 하 좌 우 네 곳에 어디와 연결할 지에 대해서 정의를 해주어야 하는데,

라벨을 좌측의 리스트에서 끌어다가 쓴다면, 정의가 되지 않은 상태이기 때문에 발생한다.

해결방법으로는 

 

 

첫번째  이렇게 각 버튼의 상하좌우를 연결시키는 방법

 

두번째 constraint 툴바에서 두번째 , 요술봉처럼 생긴 버튼은

Infer constraints 으로 레이아웃내 배치된 모든 위젯을 현재 위치를 기반으로 관계를 맺어 준다.
즉 알아서 자동으로 각각의 아이템들을 좌우/부모객체와 연결시켜준다. 

 

세번째 직접 코드로 설정해주는방법 

나같은경우에는 첫번째 방법으로 이용하여 문제를 해결하였다 ! 

 

아직 많이 부족하지만 더 개념이 잡히게 되면 그때 추가로 포스팅하도록 해야겠다.