Layoutというものがあるので、これを使って、好きな場所にControlを置く方法を調べました。Layoutは、Xamarin.Formsで使えるLayoutのひとつで、0から1の実数を指定してControlの配置を決定できます。今回の例として、Xamlファイルはこのように用意します。</ContentPage.Content></ContentPage>Contentとして、AbsoluteLayoutを用意して、その中にStackLayoutを配置しています。AbsoluteLayoutはx:NameでabsoluteLayoutという名前で、この後のプログラムで参照できるようにしています。AbsoluteLayoutの中にStackLayoutなどのLayoutを書いておくと、AbsoluteLayoutがないのと同じように、いつも通りのLayoutを用意できます。それでは、AbsoluteLayoutを使って、Controlを配置していきます。配置AbsoluteLayoutでは、大きくこの流れでControlを追加していきます。Controlを用意するControlの配置する位置を決定するLayoutにControlを追加する2番と3番は順番が逆でも大丈夫です。今回は、例としてボタンを追加します。実際に追加したものが下記のプログラムです。AbsoluteLayout.AutoSize));//LayoutにControlを追加absoluteLayout.Children.Add(button);Controlの用意は、いつも通りです。次に、Controlの配置位置の決定ですが、方法としてAbsoluteLayout名前空間のSetLayoutFlags()とSetLayoutBounds()を使います。SetLayoutFlags()は、第一引数に配置するControlを指定し、第二引数ではSetLayoutBounds()で指定するRectangleの解釈を設定するためにあります。今回は、デフォルトで定義されているものを使うので第二引数にはAbsoluteLayoutFlags.PositionProportionalを指定します。実際に、Controlを位置を決定するのはSetLayoutBounds()です。引数には配置するControlを指定し、第二引数には位置を指定します。位置はRectangleを使って示し、Rectangleの第一引数と第二引数には、配置するControlの中央の位置をx座標・y座標の順に指定し、第三引数と第四引数には、幅や高さを指定します。幅や高さには今回、AbsoluteLayout.AutoSizeを使用しました。指定したControlの幅や高さをそのまま使うために、縮尺が崩れることなく表示されるというものです。ここで注意しなければならないのが、x座標やy座標は画面のサイズの割合として、0から1の実数で指定します。0とすれば、x座標の場合は一番左に、y座標の場合は一番上に配置されます。ようにして、Controlを追加します。これを実行すると、iPhoneのシミュレータで実行した結果が下の図です。まとめAbsoluteLayoutは、SetLayoutFlags()やSetLayoutBounds()の使い方で色々な配置方法が指定できます。今回は、既に用意されているものを使いましたが、自分でも設定できるので、もし色々な使い方をしたい場合は調べてみるといいかもしれません。