質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

Q&A

解決済

1回答

5510閲覧

Xamarin.Forms AbsoluteLayoutのサイズ指定

otaota

総合スコア30

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

0グッド

0クリップ

投稿2016/12/29 02:09

###前提・実現したいこと
AbsoluteLayoutの幅や高さの指定はできないものでしょうか?

やりたいこととしては、画像多めのページを作る際、端末の解像度に合わせて画像ひとつひとつの位置やスケールを調整して配置するのではなく、固定サイズの仮想画面(=AbsoluteLayoutで作った領域)上に画像を配置して、最後に解像度に合わせて画面全体のスケールを調整したいと考えています。

###発生している問題・エラーメッセージ
今は、WidthRequestやHeightRequestで値を指定しても無視されているような気がします。
例えばiPhone6のシミュレータでは、375x647
iPhone6Plusでは414x716
を返してきます。
※画面上部に20ピクセルのPaddingを設定しています。

###該当のソースコード

var layout = new AbsoluteLayout { BackgroundColor = Color.Red, WidthRequest = 640, HeightRequest = 960, }; SizeChanged += (sender, e) => { Debug.WriteLine(layout.Width + " x " + layout.Height); }

###試したこと
AbsoluteLayoutを実体化するときでなく、その後で、
layout.WidthRequest = 640;
layout.HeightRequest = 960;
とやったり、Pageのサイズ確定時(上のDebug.WriteLineの前)で
同様にやっても効果がありませんでした。
layout.WidthRequest = 100;
layout.HeightRequest = 150;
など実際に返る値より小さい値を設定しても同じでした。

layoutにスケールをかけると表示に反映されるのは確認しています。

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報
Xamarin 6.1.3(build 19)
Mac Note Pro
OS X Yosemite(10.10.5)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

HorizontalOptionsVerticalOptionsプロパティがLayoutOptions.Fill(初期値)であるため、Width / HeightRequestが無視され、親Viewと同じ幅・高さになっていると思われます。

HorizontalOptions、VerticalOptionsプロパティの値をLayoutOptions.CenterLayoutOptions.Startに変更してみてください。

スケールさせたいAbsoluteLayoutの位置を柔軟にレイアウトしたい場合はAbsoluteLayoutやRelativeLayoutの入れ子にしてやるといいと思います。

<ContentPage> <AbsoluteLayout や RelativeLayout> <スケールさせるAbsoluteLayout /> </AbsoluteLayout や RelativeLayout> </ContentPage>

投稿2016/12/30 17:47

P3PPP

総合スコア359

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otaota

2016/12/31 06:09

回答ありがとうございます。 試してみたところ確かに入れ子にすることで期待したサイズのものを取得できました。 ついでに、試していてわかったのですが、質問に書いたように期待したサイズが取得できなかった場合もその領域外にものを配置できたので、(背景に色をつけるとかしなければ)あまり気にしなくても良いこともわかりました。 いずれにしても1歩前進したので、ありがとうございました。
otaota

2016/12/31 11:14

追記:自分の返答に書いたように、領域外でも画像を配置することはできますが、ボタンを配置したときは押下判定をしてもらえないようなので、やはり2段階にするのがいいようです。
P3PPP

2017/01/02 07:01

イイデスネ????
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問