2017-10-13 65 views
4

我最近和我的團隊討論了Xamarin.Form的佈局,他們認爲Xamarin.Forms.AbsoluteLayout很脆弱並且很難與(我個人認爲它們非常方便,特別是對於比例佈局,以及我記得閱讀的所有東西,它們通常不是性能問題)。他們引用了this article,其中說避免使用AbsoluteLayouts - 但是這是一個Android特定的文章,它指的是Android.Widget.AbsoluteLayoutXamarin.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方法來控制控件放置。表單有自己的層次結構父級佈局管理器來執行計算。我有一個客戶端,通過本地轉換爲Android LayoutParams和iOS約束替換了整個Forms佈局系統,它具有基於Fody的構建轉換和運行時緩存系統,並且實現*幾乎*原生布局速度,完全吸引了Forms的佈局經理。 – SushiHangover

回答

3

Xamarin Forms中的佈局與原生平臺上的佈局不同。 XF絕對佈局是而不是只是Android AbsoluteLayout的包裝。

XF中的佈局與WPF和其他Microsoft平臺中的佈局類似。佈局首先要求所有的孩子給它一個首選大小(測量)。然後它用它的邏輯來安排它的孩子。內置控件包裝現有的本地控件(例如,將地圖映射到iOS上的UITextBox和Android上的EditText)。

這就是說。我同意絕對佈局通常不是支持多種屏幕尺寸的好方法。還有其他更靈活的佈局可幫助您創建「通用」UI的一般方法。