xaml - 如何在 Xamarin Forms 中的另一个布局之上覆盖卡片视图或框架布局?
问题描述
我有一种情况,我需要“覆盖”一组信息,这些信息通过卡片(作为 ContentView 实现)显示在页眉的一部分顶部,该页眉在 FlexLayout 内部的网格中定义。输出应类似于以下内容,其中标头是红色部分:
标头的代码如下:
<!-- Header -->
<FlexLayout
HeightRequest="108"
AlignItems="Center"
Direction="Column"
BackgroundColor="#D92732">
<Grid VerticalOptions="Center" Margin="0, 30, 0, 0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="20"></ColumnDefinition>
<ColumnDefinition Width="40*"></ColumnDefinition>
<ColumnDefinition Width="80*"></ColumnDefinition>
<ColumnDefinition Width="300*"></ColumnDefinition>
<ColumnDefinition Width="80*"></ColumnDefinition>
<ColumnDefinition Width="40*"></ColumnDefinition>
<ColumnDefinition Width="20"></ColumnDefinition>
</Grid.ColumnDefinitions>
<ImageButton Source="Bell.png" Grid.Column="1" BackgroundColor="Transparent"
WidthRequest="37"
HeightRequest="40"
Aspect="AspectFit">
</ImageButton>
<Label
Grid.Column="3"
Text="Payments"
TextColor="#F9F8FA"
FontSize="20"
HeightRequest="40"
HorizontalOptions="Center"
VerticalOptions="Center" VerticalTextAlignment="End">
</Label>
<ImageButton Source="Bell.png" Grid.Column="5" BackgroundColor="Transparent"
WidthRequest="37"
HeightRequest="40"
Aspect="AspectFit">
</ImageButton>
</Grid>
</FlexLayout>
解决方案
我用来解决让一个视觉元素覆盖另一个视觉元素的一部分的问题的方法,在这种情况下,一个网格覆盖另一个网格的一部分,是将覆盖网格的位置设置为特定的行和列首先是 Grid,然后将覆盖 Grid 的 Margin 的 Bottom 值设置为一个负数,表示覆盖 Grid 的所需高度,如以下代码和屏幕截图所示。请注意,我将覆盖的网格包含在一个框架中,在该框架中我设置了负的底部边距值。
<Frame Grid.Row="2" Grid.ColumnSpan="3" Grid.Column="0"
Margin="16,30,16,-310" WidthRequest="343" HeightRequest="300">
<StackLayout HeightRequest="350">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="44*" />
<RowDefinition Height="38*" />
<RowDefinition Height="40*" />
<RowDefinition Height="20*" />
<RowDefinition Height="96*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Label Grid.Row="0"
FontFamily="{StaticResource HNMedium}"
FontSize="{StaticResource Font20}"
HorizontalOptions="Start"
Text="Verify Account"
TextColor="{StaticResource NGIC_DarkGray}"
VerticalOptions="Start" />
<Label Grid.Row="1"
Text="Enter the verification code sent to ******8998"
FontSize="{StaticResource Font16}"
TextColor="{StaticResource NGIC_DarkGrayishBlue}"
FontFamily="{StaticResource HNRegular}"/>
<Entry Grid.Row="2" TextColor="Black" />
<Label Grid.Row="3"
Text="Send a new code"
TextColor="{StaticResource NGIC_Red}"
FontSize="{StaticResource Font14}"
FontFamily="{StaticResource HNMedium}"/>
<StackLayout Grid.Row="4" >
<Button Text="Next"
TextColor="{StaticResource White}"
BackgroundColor="{StaticResource NGIC_Red}"
CornerRadius="15"
WidthRequest="300"
HeightRequest="40"
VerticalOptions="CenterAndExpand"
HorizontalOptions="CenterAndExpand"
FontFamily="{StaticResource HNBold}"
FontSize="{StaticResource Font14}"/>
<Button Text="Cancel"
TextColor="{StaticResource NGIC_Red}"
BackgroundColor="{StaticResource White}"
CornerRadius="15"
WidthRequest="300"
HeightRequest="40"
VerticalOptions="CenterAndExpand"
HorizontalOptions="CenterAndExpand"
FontFamily="{StaticResource HNRegular}"
FontSize="{StaticResource Font14}"
BorderColor="{StaticResource NGIC_Red}"
BorderWidth="1"/>
</StackLayout>
</Grid>
</StackLayout>
</Frame>
推荐阅读
- sql - 谁能解释下面的查询是如何工作的?
- android - 蛇游戏:加长蛇(在 Xammarin Android 中)
- python - 是否有允许对不平衡的多类数据集重新采样的 Python 函数?
- python - 在python3中,在__init__函数内部或外部定义类方法有什么区别?
- terraform - Terraform:模块 + for_each 的输出
- javascript - 将参数作为 Object._property 传递给 onClick 上的回调函数会产生错误(反应)
- python - 如何优化在 python 中的 Networkx 库中提取 all_simple_paths?
- java - 如何根据真实用户使firebase实时数据库可写
- r - R,scatterplot3d:为组分配特定颜色并更改字体
- list - 如何将多个项目放在 ScrollView 的同一行(ReactNative)