EMDI는 지금도 개발중

Android : missing constraints in constraintlayout 해결방법 본문

네이티브/Android

Android : missing constraints in constraintlayout 해결방법

EMDI 2020. 5. 6. 11:15

안드로이드 프로젝트에서 res > layout > activity_main.xml로 들어가면 메인화면을 디자인할 수 있는 창이 뜹니다. 테스트를 하기 위해 해당 창에 버튼 하나를 추가해보았습니다. 근데 바로 오류가 나는군요.

 

오류 내용은 Missing Constraints in ConstraintLayout이라 하여 레이아웃 안에 추가로 넣었던 버튼이 안보인다는 오류입니다. 나는 분명 창에다가 버튼을 추가하였는데 왜 이러한 오류가 나는 것일까? 그 답은 XML파일을 확인해보시면 바로 알 수 있습니다.

 

XML파일로 들어와보니 아까 내가 추가했던 Button에 빨간라인이 쳐져있으면서 오류가 뜨는 것을 알 수 있습니다. 근데 TextView는 오류가 안나고 Button만 오류가 나네요? 이러한 이유는 Button의 위치를 지정해주지 않았기 때문입니다. 

 

// 수정 전 코드
<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button"
    tools:layout_editor_absoluteX="109dp"
    tools:layout_editor_absoluteY="130dp" />

// 수정 후 코드
<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button"
    tools:layout_editor_absoluteX="109dp"
    tools:layout_editor_absoluteY="130dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent"/>

TextView와 동일하게 Constraint 위치를 지정해주거나 

 

아니면 디자인창 상단을 보시면 마법봉같이 생긴 아이콘이 보입니다. 해당 아이콘은 Infer Constraints라고 하여 생성한 위젯의 위치를 자동으로 정해주는 기능입니다. 둘 중 하나의 방법으로 해결하면 끝!

Comments