StackLayout 不遵守 Xamarin.Forms 中的 VerticalOptions 属性
StackLayout not obeying VerticalOptions property in Xamarin.Forms
我正在尝试创建一个简单的堆栈布局 UI。
这里是 XAML.
<ContentView>
<StackLayout
BackgroundColor="Green"
HeightRequest="500"
VerticalOptions="End">
<StackLayout
BackgroundColor="LightSkyBlue"
HeightRequest="100"
VerticalOptions="End">
<!-- // ADD CONTROLS HERE[! -->
</StackLayout>
</StackLayout>
</ContentView>
理想情况下,'blue' stacklayout 应该在底部对齐绿色的布局但是,它不会移动并保持在顶部。
我做错了什么?
请指点我正确的方向
为了更清楚起见附上图片。
根据我的经验,StackLayout
永远不会服从垂直或水平选项。它只会根据需要使用尽可能多的 space 。您可以在 StackLayout
中放置一个透明 BoxView
并将其 VerticalOptions
设置为 FillAndExpand
。这将强制 StackLayout
使用所有 space.
我通常使用 Grid
代替并使用 <RowDefinition Height="*"/>
强制它使用所有 space.
您需要将blue Stack Layout 的Vertical Option 设置为EndAndExpand。因为堆栈布局子项不会自动填充。如果你愿意,你需要强迫它。详细解释可以看这个回答here
您只需将您的代码替换为以下代码:
<StackLayout
BackgroundColor="Green"
HeightRequest="500"
VerticalOptions="End">
<StackLayout
BackgroundColor="LightSkyBlue"
HeightRequest="100"
VerticalOptions="EndAndExpand">
<!-- // ADD CONTROLS HERE[! -->
</StackLayout>
</StackLayout>
希望对您有所帮助
谢谢
我正在尝试创建一个简单的堆栈布局 UI。 这里是 XAML.
<ContentView>
<StackLayout
BackgroundColor="Green"
HeightRequest="500"
VerticalOptions="End">
<StackLayout
BackgroundColor="LightSkyBlue"
HeightRequest="100"
VerticalOptions="End">
<!-- // ADD CONTROLS HERE[! -->
</StackLayout>
</StackLayout>
</ContentView>
理想情况下,'blue' stacklayout 应该在底部对齐绿色的布局但是,它不会移动并保持在顶部。
我做错了什么? 请指点我正确的方向
为了更清楚起见附上图片。
根据我的经验,StackLayout
永远不会服从垂直或水平选项。它只会根据需要使用尽可能多的 space 。您可以在 StackLayout
中放置一个透明 BoxView
并将其 VerticalOptions
设置为 FillAndExpand
。这将强制 StackLayout
使用所有 space.
我通常使用 Grid
代替并使用 <RowDefinition Height="*"/>
强制它使用所有 space.
您需要将blue Stack Layout 的Vertical Option 设置为EndAndExpand。因为堆栈布局子项不会自动填充。如果你愿意,你需要强迫它。详细解释可以看这个回答here
您只需将您的代码替换为以下代码:
<StackLayout
BackgroundColor="Green"
HeightRequest="500"
VerticalOptions="End">
<StackLayout
BackgroundColor="LightSkyBlue"
HeightRequest="100"
VerticalOptions="EndAndExpand">
<!-- // ADD CONTROLS HERE[! -->
</StackLayout>
</StackLayout>
希望对您有所帮助
谢谢