質問: AndroidStudio を昨日から使い始めました。 手始めに↓のサイトを参考に作成しています。 https://akira-watson.com/android/imagebutton.html <問題点> イメージのXY座標が仮想実行時に無視される。 プレビューではOK。 <結果> ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/acf9041cc902f2ea7c0dc74de0faae93.jpeg) 実行環境 Windows10 Home 64bit CPU:Corei7 2G メモリ:8G 携帯擬似環境 Pixel 3 API 25 <やった事> Empty Activityでプロジェクトを新規作成し、イメージを一つ追加。 イメージの位置をずらしてビルド→実行。 以下詳細。 ・File→New→NewProject Empty Activity Language:Java Minimum APIlevel:API 25:Android 7.1.1(Nougat) ・デスクトップにある『icon.jpg』を app res drawableにドラッグ&ドロップ→OK (コンピュータのユーザ名は全て半角文字です) ・app → res → layout の activity_main.xml を 以下の記述に変更。(デフォルトにImageを追加) ``` ``` ・Build → MakeProject →全てレ点、エラーなしの意味と思われる ・Run → Run'app'→Pixel 3 API 25を選択しOK <聞きたい事> 1画像のX・Y座標が適用されるにはどうしたらよいか? イメージのXY座標が仮想実行時に無視される。 プレビューではOK。 X・Y座標が初期化されている? 2どの擬似携帯を使用すればよいか? 携帯の環境によるものかと考えた。 https://www.au.com/developer/android/kishu/display/ 上記サイトにある一覧で自分の携帯(Qua phone)の仕様を確認した所、 画面 横×縦 720×1280 との記述があったので ビルド実行時にもこのサイズの物をエミュレートしてやれば良いと思ったのですが、 対象が複数ありどれが該当するのかがわかりません。 ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/9759f94e0b3225cb024cc46cb8b86701.png) 携帯の設定画面では Androidバージョンは7.1.1という事が確認できたのですが 外観からは『Qua phone』モデルからは『KYV42』という事しか確認できませんでした。 これらにより、現在非常に学習が進め辛くなっています。 ご享受いただければ幸いです、よろしくお願いいたします。
回答: ConstraintLayoutにコンポーネントを配置する場合、 ``` ``` この指定では実行時に意図した配置にはなりません。toolsで表される属性はレイアウトエディター上の表示にのみ反映されるので、実行時には影響しません。 ConstraintLayoutでは、コンポーネントの上下左右辺を親レイアウトや他コンポーネントと接続してその相対距離関係を「制約」することによって位置を決定します。上記のタグ記述にはその制約が存在しないため、無制約として実行時には左上詰め表示になってしまいます。 レイアウトエディター上でButtonのコンポーネントをマウスカーソルで指してクリックしたり、Designタブを選んでデザインビューにしたときに左下に表示されるComponentsのリストから目的のボタンを選ぶと、四辺に○が描画されるはずです。そこをマウスで指して左ボタンを押してドラッグすると、矢印が伸びていくはずです。これを、親レイアウトや他コンポーネントに接続して位置決めをします。正しく配置するには、最低でも「上下のうち一方」と「左右のうち一方」の二辺が制約されている必要があります。四辺とも制約してもいいし、三辺でもいいし。それは状況によりけりです。 参考にしたサイトの中だと、このページで解説されていますね。 [Android] ConstraintLayout による制約を設定するには | nyan のアプリ開発