1

我正在尝试创建一个简单的 stacklayout UI。这是 XAML。

    <ContentView>
        <StackLayout
            BackgroundColor="Green"
            HeightRequest="500"
            VerticalOptions="End">
            <StackLayout
                BackgroundColor="LightSkyBlue"
                HeightRequest="100"
                VerticalOptions="End">
                <!--  // ADD CONTROLS HERE[!  -->
            </StackLayout>
        </StackLayout>
    </ContentView>

理想情况下,“蓝色”堆栈布局应该在绿色堆栈的底部对齐,但是,它只是不移动并停留在顶部。

我究竟做错了什么?请指出我正确的方向

附上图像以获得更好的清晰度。

在此处输入图像描述

4

3 回答 3

3

您只需要用以下代码替换您的代码:

<StackLayout
        BackgroundColor="Green"
        HeightRequest="500"
        VerticalOptions="End">
        <StackLayout
            BackgroundColor="LightSkyBlue"
            HeightRequest="100"
            VerticalOptions="EndAndExpand">
            <!--  // ADD CONTROLS HERE[!  -->
        </StackLayout>
    </StackLayout>

希望对你有帮助

谢谢

于 2020-02-25T13:04:32.120 回答
2

根据我的经验, aStackLayout永远不会服从 Vertical 或 Horizo​​ntal 选项。它只会使用所需的空间。您可以在 中放置一个透明BoxViewStackLayout并将其设置VerticalOptionsFillAndExpand。这将迫使StackLayout使用所有空间。

我通常使用 aGrid代替并使用<RowDefinition Height="*"/>来强制它使用所有空间。

于 2020-02-24T19:29:23.743 回答
1

您需要将蓝色 Stack Layout 的 Vertical Option 设置为 EndAndExpand。因为堆栈布局子级不会自动填充。如果你愿意,你需要强迫它。您可以在此处查看此答案以获取详细说明。

于 2020-02-24T19:31:47.127 回答