为什么 Xamarin 绝对布局堆叠不尊重儿童顺序
Why does Xamarin Absolute Layout stacking not respect Children order
我正在尝试实现内容在背景上有图像的布局(位于左下角,垂直扩展 100%,水平扩展 60%)
整个内容都包裹在一个 AbsoluteLayout 中,主要内容是这个布局的子布局,由 StackLayout(以及里面的一些其他内容)组成。
Visual Studio(Visual Studio Community 2017)中的预览器正确显示布局 - 图像位于内容下方,内容按预期放置在中间。但是,VS Emulator 和 Genymotion 都显示内容上方的图像。
我对代码进行了修剪,使其尽可能可读(去除了样式)
...
<Frame VerticalOptions="End" AbsoluteLayout.LayoutFlags="All" Margin="0" Padding="0" IsClippedToBounds="True" AbsoluteLayout.LayoutBounds="0,1,0.6,1">
<Image Source="Graphic_Anna.png" />
</Frame>
<!-- Start: Actual Page Content -->
<StackLayout VerticalOptions="Center" AbsoluteLayout.LayoutBounds="0,0,1,1" AbsoluteLayout.LayoutFlags="All" x:Name="ApplicationLayoutContentLevel">
<Label Text="This is some text in main content" />
</StackLayout>
<!-- End: Actual Page Content -->
</AbsoluteLayout>
</ContentPage.Content>
...
此屏幕截图(来自预览器)显示了预期结果:https://i.imgur.com/C8GBMSi.png
然而,两个模拟器的结果似乎都是这样:https://i.imgur.com/NvJFZan.png
遗憾的是,目前我没有在实际 Android phone 上测试应用程序的选项
您想像下面的截图那样实现吗?
不知道你用的是什么尺寸,所以我把你的截图截下来了。
如果是,还有我的code.If你要实现覆盖效果,我用了两个stacklayout
,第一个布局会被第二个覆盖layout.Notice:如果你设置VerticalOptions
会影响 AbsoluteLayout.LayoutBounds
<ContentPage.Content>
<AbsoluteLayout>
<StackLayout VerticalOptions="End" AbsoluteLayout.LayoutFlags="All" Margin="0" Padding="0" IsClippedToBounds="True" AbsoluteLayout.LayoutBounds="0,1,0.6,1">
<Image Source="Graphic_Anna.png" />
</StackLayout>
<!-- Start: Actual Page Content -->
<StackLayout AbsoluteLayout.LayoutFlags="All" AbsoluteLayout.LayoutBounds="0.8,0.7,0.5,0.5" x:Name="ApplicationLayoutContentLevel">
<Image Source="start.png" Scale="0.7"/>
<Label Text="10/10" TextColor="Black" FontSize="50" Margin="20,10,0,0"/>
<Label Text="Great job! you got everything" TextColor="Black" Margin="0,10,0,0" />
<Label Text="Back to games" TextColor="red" Margin="25,20,0,0" />
</StackLayout>
<!-- End: Actual Page Content -->
</AbsoluteLayout>
</ContentPage.Content>
我正在尝试实现内容在背景上有图像的布局(位于左下角,垂直扩展 100%,水平扩展 60%)
整个内容都包裹在一个 AbsoluteLayout 中,主要内容是这个布局的子布局,由 StackLayout(以及里面的一些其他内容)组成。
Visual Studio(Visual Studio Community 2017)中的预览器正确显示布局 - 图像位于内容下方,内容按预期放置在中间。但是,VS Emulator 和 Genymotion 都显示内容上方的图像。
我对代码进行了修剪,使其尽可能可读(去除了样式)
...
<Frame VerticalOptions="End" AbsoluteLayout.LayoutFlags="All" Margin="0" Padding="0" IsClippedToBounds="True" AbsoluteLayout.LayoutBounds="0,1,0.6,1">
<Image Source="Graphic_Anna.png" />
</Frame>
<!-- Start: Actual Page Content -->
<StackLayout VerticalOptions="Center" AbsoluteLayout.LayoutBounds="0,0,1,1" AbsoluteLayout.LayoutFlags="All" x:Name="ApplicationLayoutContentLevel">
<Label Text="This is some text in main content" />
</StackLayout>
<!-- End: Actual Page Content -->
</AbsoluteLayout>
</ContentPage.Content>
...
此屏幕截图(来自预览器)显示了预期结果:https://i.imgur.com/C8GBMSi.png
然而,两个模拟器的结果似乎都是这样:https://i.imgur.com/NvJFZan.png
遗憾的是,目前我没有在实际 Android phone 上测试应用程序的选项
您想像下面的截图那样实现吗? 不知道你用的是什么尺寸,所以我把你的截图截下来了。
如果是,还有我的code.If你要实现覆盖效果,我用了两个stacklayout
,第一个布局会被第二个覆盖layout.Notice:如果你设置VerticalOptions
会影响 AbsoluteLayout.LayoutBounds
<ContentPage.Content>
<AbsoluteLayout>
<StackLayout VerticalOptions="End" AbsoluteLayout.LayoutFlags="All" Margin="0" Padding="0" IsClippedToBounds="True" AbsoluteLayout.LayoutBounds="0,1,0.6,1">
<Image Source="Graphic_Anna.png" />
</StackLayout>
<!-- Start: Actual Page Content -->
<StackLayout AbsoluteLayout.LayoutFlags="All" AbsoluteLayout.LayoutBounds="0.8,0.7,0.5,0.5" x:Name="ApplicationLayoutContentLevel">
<Image Source="start.png" Scale="0.7"/>
<Label Text="10/10" TextColor="Black" FontSize="50" Margin="20,10,0,0"/>
<Label Text="Great job! you got everything" TextColor="Black" Margin="0,10,0,0" />
<Label Text="Back to games" TextColor="red" Margin="25,20,0,0" />
</StackLayout>
<!-- End: Actual Page Content -->
</AbsoluteLayout>
</ContentPage.Content>