web-dev-qa-db-ja.com

左上隅のConstraintLayoutビュー

ButtonTextViewのようなビューをConstraintLayoutのように作成するたびに、それらはすべて、配置した場所ではなく、上隅で動かなくなります。

新しいアクティビティを作成してエミュレータを変更しようとしましたが、結果は同じままです。

これは何が起こっているかのスクリーンショットです:

enter image description here

何が問題なのでしょうか?

27
hassanito hajj

制約レイアウトガイド に記載されているとおり:

デバイスでレイアウトを実行するときにビューに制約がない場合、位置[0,0](左上隅)に描画されます。

ビューには、少なくとも1つの水平拘束と垂直拘束を追加する必要があります。

制約を適用していないと思います。

ビューに制約を手動で適用するか、「制約を推測する」ボタンを使用してレイアウトエディターに実行させます。

enter image description here

31
azizbekian

ビューをレイアウトエディターにドロップすると、制約がない場合でも、ビューを離れた場所に残ります。これは、編集を簡単にするためだけです。

つまり、制約を追加するまで、ビューは「離れた場所にとどまる」ことになります。

プレビューとアプリで見た目が異なるのは、tools:を含むXMLのすべてが アプリの実行時にコードから削除されます であるためです。これらのオプションはAndroid St​​udioレイアウトエディター専用であり、コードの実行時に表示されるはずの内容を表すものではありません。

初心者にとっては面倒かもしれません

制約がなくてもコンパイルエラーは発生しません

ただし、

レイアウトエディターでは、ツールバーにエラーとして制約の欠落が示されます。エラーおよびその他の警告を表示するには、警告とエラーを表示(数字の付いた赤いボタン)をクリックします。制約の欠落を回避するために、レイアウトエディターは 制約の自動接続および推論機能 を使用して自動的に制約を追加できます。

詳細

5
cricket_007

これをすばやく簡単に修正するには、コンポーネント(TextView、ImageViewなど)をクリックし、[制約の推測]ボタンをクリックします。 2つの黄色のプラス記号のように見えます。

制約イメージを推測する

infer constraints image

3
I.A. Washburn

これを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"

次に、デザインでそれを使用します。

幸運を! :)

1
moshiah_now

基本的に、このタイプの問題はConstraintLayoutを使用したときに発生します。

  • Android St​​udioからPreviewに移動します。

  • 特定の位置に設定するボタンボタンを選択します

  • 最後にinfer constrainsボタンをクリックします。下の写真の赤い丸に記載されています。

https://i.imgur.com/sDu1ghP.jpg

それはすべてプロジェクトを実行し、魔法を見る

ありがとうございました