Button
やTextView
のようなビューをConstraintLayout
のように作成するたびに、それらはすべて、配置した場所ではなく、上隅で動かなくなります。
新しいアクティビティを作成してエミュレータを変更しようとしましたが、結果は同じままです。
これは何が起こっているかのスクリーンショットです:
何が問題なのでしょうか?
制約レイアウトガイド に記載されているとおり:
デバイスでレイアウトを実行するときにビューに制約がない場合、位置[0,0](左上隅)に描画されます。
ビューには、少なくとも1つの水平拘束と垂直拘束を追加する必要があります。
制約を適用していないと思います。
ビューに制約を手動で適用するか、「制約を推測する」ボタンを使用してレイアウトエディターに実行させます。
ビューをレイアウトエディターにドロップすると、制約がない場合でも、ビューを離れた場所に残ります。これは、編集を簡単にするためだけです。
つまり、制約を追加するまで、ビューは「離れた場所にとどまる」ことになります。
プレビューとアプリで見た目が異なるのは、tools:
を含むXMLのすべてが アプリの実行時にコードから削除されます であるためです。これらのオプションはAndroid Studioレイアウトエディター専用であり、コードの実行時に表示されるはずの内容を表すものではありません。
初心者にとっては面倒かもしれません
制約がなくてもコンパイルエラーは発生しません
ただし、
レイアウトエディターでは、ツールバーにエラーとして制約の欠落が示されます。エラーおよびその他の警告を表示するには、警告とエラーを表示(数字の付いた赤いボタン)をクリックします。制約の欠落を回避するために、レイアウトエディターは 制約の自動接続および推論機能 を使用して自動的に制約を追加できます。
これをxmlでボタンなどに追加します
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.57"
次に、デザインでそれを使用します。
幸運を! :)