Android StudioでConstraintLayoutが自動補完されずにエラーが出る問題の解決

Android Studioで開発している時にドラッグ&ドロップでオブジェクトを追加する時に以下のエラーが出て困りました。

f:id:asmsuechan:20181205212313p:plain

Missing Constraints in ConstraintLayout
This view is not constrained vertically: at runtime it will jump to the top unless you add a vertical constraint  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 

ConstraintLayoutとは

簡単に言うと、「Material Designに準拠したいい感じな場所に勝手に配置してくれる機能」のことをさします。こちらの記事(Androidの新しいLayout、ConstraintLayoutことはじめ)がとても分かりやすいです。

さて、では上の画像でを見てみると上下方向のConstraintsが設定されていないことでエラーが発生しているようです。

解決方法

対象オブジェクトを選択して、上のボタン群の中にある「Infer Constraints」をクリックしましょう。 f:id:asmsuechan:20181205212753p:plain

オブジェクト挿入時に自動でConstraintsを設定するには

でも、最初から自動でConstraintsは設定されてて欲しいですよね?こうするためには上下左右のガイドに従うことが重要です。

f:id:asmsuechan:20181205213019g:plain

こんな感じに、オブジェクトを配置する際に上下左右でガイドが出る場所があるので、ここに配置しましょう。