2017-10-13 8 views
4

私は最近、私のチームとXamarin.Formレイアウトについて議論しました。彼らはXamarin.Forms.AbsoluteLayoutが脆弱で作業が難しいと思っていました(個人的には、特に比例レイアウトや、一般にパフォーマンスの問題ではありません)。彼らはthis articleを参照していましたが、これはAbsoluteLayouts - ではなく、Android固有の記事であるであり、それはAndroid.Widget.AbsoluteLayoutを参照していました。Xamarin.Formsレイアウトはどのようにプラットフォーム固有のレイアウトに変換されますか?

Xamarin.Forms.LayoutはどうにかAndroid.Widget.AbsoluteLayoutに変換されますか(Xamarin.Formsは比例したサイズ設定/位置指定が可能なので完全に違いがあると思います)方法です。Xamarin.Formsは、さまざまなレイアウトをプラットフォーム固有のレイアウトに変換しますか?

+1

https://github.com/xamarin/Xamarin.Forms – Jason

+0

参考に感謝します。私はコードを掘り下げて答えを見つけようとします。あなたは、Xamarin.Forms.AbsoluteLayoutを断定的に避けるべきですか? – jbyrd

+2

@jbyrd 'Android.Views.View'の最終行は、Formsベースの' VisualElementTracker'が 'x、y、width、height'パラメタでネイティブ' View.Layout'メソッドを直接呼び出して、コントロールをハードワイヤー接続することです配置。 Formsには、計算を実行する独自の階層親ベースのレイアウトマネージャがあります。 Formsレイアウトシステム全体をAndroid LayoutParamsやiOSの制約へのネイティブ変換に置き換えたクライアントがあり、Fodyベースのビルド変換とランタイムキャッシングシステムを備え、*ほとんど*ネイティブのレイアウト速度を達成し、フォームのレイアウトを完全に煙にしますマネージャー。 – SushiHangover

答えて

3

Xamarinフォームでは、ネイティブプラットフォームでのレイアウトと、同等のレイアウトが異なる場合があります。 XFアブソリュートレイアウトはで、ではなく、Android AbsoluteLayoutのラッパーです。

XFのレイアウトは、WPFや他のMicrosoftプラットフォームでの動作と似ています。レイアウトは、最初に、すべての子にそれに優先サイズ(Measure)を与えるように求めます。次に、そのロジックを使用して子を配置します。組み込みのコントロールは、既存のネイティブコントロール(たとえば、AndroidのiOSとEditTextのUITextBoxへのエントリマップ)をラップします。

と言われています。絶対レイアウトは一般的に複数の画面サイズをサポートするための良いアプローチではないということに同意します。 「ユニバーサル」UIに対する一般的なアプローチを作成するのに役立つ、より柔軟なレイアウトがあります。

関連する問題