ContentView being Squished by ScrollView




在进行实验时,我遇到了一些我无法理解的东西。
我已经将代码简化到最基本的级别。 以下是页面中 xaml 的示例 -

<StackLayout Spacing="0">
<ContentView BackgroundColor="Yellow" HeightRequest="70"/>
<ContentView BackgroundColor="DarkBlue" VerticalOptions="FillAndExpand">
<ScrollView>
<StackLayout x:Name="scroll">
</StackLayout>
</ScrollView>
</ContentView>
</StackLayout>

(在我的实际代码中,我使用的是从<ContentView>派生的自定义视图,但问题仍然存在( 注意第一个内容视图上的高度请求

这是背后的代码

public partial class MainPage : ContentPage
{
private readonly int number = 100;
public MainPage()
{
InitializeComponent();
for (int i = 0; i < number; i++) {
scrollBoi.Children.Add(new Label() {
Text = i.ToString(),
TextColor = Color.White
});
}
}
}

它只是将 100 个标签添加到<ScrollView>
中的<Stacklayout>

这是安卓上的结果。

显然,黄色内容视图不是 70px 高。
为澄清起见,如果我删除代码隐藏中的代码,以便没有标签添加到<StackLayout>,那么这就是结果。内容视图尚未被挤压。我还发现,我添加到ScrollView的标签越多,ContentView就越小。

有趣的是,如果我使用<StackLayout>而不是<ContentView>,则不会出现此问题,就像这样

<StackLayout HeightRequest="70" BackgroundColor="Yellow"/>
<ContentView BackgroundColor="DarkBlue" VerticalOptions="FillAndExpand">
<ScrollView>
<StackLayout x:Name="scroll">
</StackLayout>
</ScrollView>
</ContentView>
</StackLayout>

这是结果 - 并且是期望的结果。但是,我想使用内容视图,而不是堆栈布局。 我认为内容视图有一些奇怪的事情,但我真的不确定。

任何解释或帮助将不胜感激,
谢谢!

解决方案 1 :

您可以将它们放在网格中而不是StackLayout中。

<Grid VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand">
<Grid.RowDefinitions>
<RowDefinition Height="70" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<ContentView  Grid.Row="0" BackgroundColor="Yellow" HeightRequest="70"/>
<ContentView  Grid.Row="1" BackgroundColor="DarkBlue" VerticalOptions="FillAndExpand">
<ScrollView>
<StackLayout x:Name="scroll">
</StackLayout>
</ScrollView>
</ContentView>
</Grid>

解决方案 2:

设置属性MinimumHeightRequest

<ContentView  BackgroundColor="Yellow" HeightRequest="70" MinimumHeightRequest="70" />

相关内容

  • 没有找到相关文章

最新更新