有没有办法创建一个垂直堆栈布局,其中一个按钮占用父项的30%,一个文本输入占用父项的70%?像这样:
<StackLayout Orientation="Vertical">
<Entry Height="70%"></Entry>
<Button Height="30%">Click me</Button>
</StackLayout>
但这不起作用。到目前为止,只有解决方案是创建一个完整的Grid项目并使用它。没有其他解决方案吗?
答案 0 :(得分:67)
在这种情况下,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根据他们孩子的总和来确定他们的最大尺寸,除非他们在网格中并且您放置了HorizontalOptions="Fill"
和VerticalOptions="Fill"
。
您可以实现此目的的另一种方法是从操作系统获取DeviceHeight和Width并手动设置元素的高度。这是一种复杂且通常有缺陷的方法,我不推荐。
答案 1 :(得分:0)
虽然您可以使用网格执行此操作,但它有更合适的布局 AbsoluteLayout
您可以使用以下方法设置位置比例: AbsoluteLayout.LayoutBounds =&#34; .5,1,0.5,0.1&#34;