[英]Xamarin Forms StackLayout: How to set width / height of children to percentages
有沒有辦法創建一個垂直堆棧布局,其中一個按鈕占用父項的30%,一個文本輸入占用父項的70%? 像這樣的東西:
<StackLayout Orientation="Vertical">
<Entry Height="70%"></Entry>
<Button Height="30%">Click me</Button>
</StackLayout>
但這不起作用。 到目前為止,只有解決方案是創建一個完整的Grid項目並使用它。 沒有其他解決方案嗎?
在這種情況下,StackLayout在高度不同的情況下表現不佳。 Xamarin Forms引擎在這一點上不如WPF引擎那么圓潤。 基本上你必須去
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="7*" />
<RowDefinition Height="3*" />
</Grid.RowDefinitions>
<Entry Grid.Row="0" VerticalOptions="Fill"></Entry>
<Button Grid.Row="1" VerticalOptions="Fill">Click me</Button>
</Grid>
另外,作為旁注,只有網格可以擴展到其父元素的整個寬度或高度。 StackLayout通過子節點的總和確定它們的最大大小,除非它們在Grid中並且你放置HorizontalOptions="Fill"
和VerticalOptions="Fill"
。
您可以實現此目的的唯一方法是從操作系統獲取DeviceHeight和Width並手動設置元素的高度。 一種復雜且通常有缺陷的方法,我不建議這樣做。
雖然您可以使用網格執行此操作,但AbsoluteLayout的布局更合適
您可以使用以下方法設置位置比例:AbsoluteLayout.LayoutBounds =“。5,1,.5,.1”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.