【Android】ConstraintLayout 제약 오류

프로그래밍 공부 일기



2020년 12월 15일
Android Studio에서 ConstraintLayout의 제약을 설정하는 오류가 나왔으므로 이 오류 내용과 해결 방법을 보여준다.

ConstraintLayout 제약 오류 내용


This view is not constrained. It only has designtime positions, so it will jump to (0,0) at runtime unless you add 
the constraints  
The layout editor allows you to place widgets anywhere on the canvas, and it records the current position with
designtime attributes (such as layout_editor_absoluteX). These attributes are not applied at runtime, so if you
 push your layout on a device, the widgets may appear in a different location than shown in the editor. To fix this, 
make sure a widget has both horizontal and vertical constraints by dragging from the edge connections.  Issue id: MissingConstraints



버튼이나 텍스트 등의 뷰에 대해서 수평 방향이나 수직 방향의 제약의 정의를 하지 않으면 좌상의 0.0의 위치에 배치되는 에러이다.

해결 방법



에러를 해결하기 위해서는, 여러가지 방법이 있어, 간단하게 몇개인가 소개한다.
  • 뷰를 화면에 배치하고 ID와 텍스트를 변경합니다.
  • 수평 및 수직축으로 제한
  • 마진 및 바이어스 설정
  • 제약 추론 아이콘에서 자동으로 제약
  • 제약 조건 삭제
  • 속성을 수동으로 추가
  • 기준선에 정렬
  • 바이어스로 센터링
  • 지침에 제약

  • 나의 경우는, 수직축에 제약하는 것으로 에러를 없앨 수가 있었다. 수직축과 수평축을 제약하기 위해서는, 뷰를 선택하고, 위치 맞춤 아이콘으로부터 설정한다.
    // 水平の場合
    layout_constraintStart_toEndOf
    layout_constraintStart_toStartOf
    layout_constraintEnd_toStartOf
    layout_constraintEnd_toEndOf
    
    // 垂直の場合
    layout_constraintTop_toTopOf
    layout_constraintTop_toBottomOf
    layout_constraintBottom_toTopOf
    layout_constraintBottom_toBottomOf
    

    변경 전 (activity_main.xml)
    <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello World" />
    

    변경 후 (activity_main.xml)
    <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello World"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent" />
    

    참고문헌



    [Android] ConstraintLayout으로 제약 조건을 설정하려면
    Android Studio에서 ConstraintLayout 제약 조건을 설정하는 방법을 배치 패턴별로 설명

    좋은 웹페이지 즐겨찾기