AbsoluteLayout を使うと画像の上にボタンやラベルといったコントロールを重ねることができデバイスサイズや縦横に関わらず View の中心に配置したり非常に簡単に書けますのでお勧めです。絶対座標を計算しなくても良いので助かります。
ファイル --> 新規作成 --> プロジェクト(P)... --> Cross-Platform --> Xamarin-Forms
で作成
AbsoluteLayout02
HomePage.cs 追加
HomePage.cs Code例
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
namespace AbsoluteLayout02
{
public partial class HomePage : ContentPage
{
public HomePage()
{
//InitializeComponent();
BackgroundColor = Color.White;
AbsoluteLayout absoluteLayout = new
AbsoluteLayout
{
VerticalOptions =
LayoutOptions.FillAndExpand
};
// BoxView を生成する
var boxView1 = new BoxView
{
Color = Color.Pink,// 塗りつぶし色
};
// BoxView を生成する
var boxView2 = new BoxView
{
Color = Color.Blue,// 塗りつぶし色
};
// BoxView を生成する
var boxView3 = new BoxView
{
Color = Color.Yellow,// 塗りつぶし色
};
// BoxView を生成する
var boxView4 = new BoxView
{
Color = Color.Purple,// 塗りつぶし色
};
// ラベルを配置
absoluteLayout.Children.Add(boxView1); //
上付き
absoluteLayout.Children.Add(boxView2); //
下付き
absoluteLayout.Children.Add(boxView3); //
左付き
absoluteLayout.Children.Add(boxView4); //
右付き
// 上付き
AbsoluteLayout.SetLayoutFlags(boxView1,
AbsoluteLayoutFlags.All);
AbsoluteLayout.SetLayoutBounds(boxView1, new
Rectangle(0.5, 0, 1, 0.25));
// 下付き
AbsoluteLayout.SetLayoutFlags(boxView2,
AbsoluteLayoutFlags.All);
AbsoluteLayout.SetLayoutBounds(boxView2, new
Rectangle(0.5, 1, 1, 0.25));
// 左付き
AbsoluteLayout.SetLayoutFlags(boxView3,
AbsoluteLayoutFlags.All);
AbsoluteLayout.SetLayoutBounds(boxView3, new
Rectangle(0, 0.5, 0.25, 1));
// 右付き
AbsoluteLayout.SetLayoutFlags(boxView4,
AbsoluteLayoutFlags.All);
AbsoluteLayout.SetLayoutBounds(boxView4, new
Rectangle(1, 0.5, 0.25, 1));
// absoluteLayoutを配置
Content = absoluteLayout;
}
}
}
App.cs の書き換え
App.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Xamarin.Forms;
namespace AbsoluteLayout02
{
public class App : Application
{
public App()
{
// The root page of your
application
MainPage = new HomePage();
}
/// <summary>
/// アプリ起動時処理
/// </summary>
protected override void OnStart()
{
// Handle when your app starts
}
/// <summary>
/// アプリ中断時処理
/// </summary>
protected override void OnSleep()
{
// Handle when your app sleeps
}
/// <summary>
/// アプリ再開時処理
/// </summary>
protected override void OnResume()
{
// Handle when your app resumes
}
}
}
▫️参考ページ
【Xamarin.Forms】 AbsoluteLayoutでプロポーショナルレイアウト
Xamarin.Forms の Absolute Layout を使用するには
Xamarin で ItemsControl 風 AbsoluteLayout
Xamarin.Forms AbsoluteLayout Recipe
Demystifying Xamarin Forms AbsoluteLayout and RelativeLayout positioning.
コメントをお書きください