.NET MAUI中CommunityToolkit.Maui Popup在Android上Label定位异常
.NET MAUI Android平台Popup内Label显示异常问题
- 维护的.NET MAUI应用原本运行正常,更新编译版本(仅升级了包含CommunityToolkit的部分NuGet包)后,Android平台出现异常:Popup中的所有Label显示位置远低于预期,内容被截断;尝试通过padding上移Label,仅能改变位置,截断问题依然存在。iOS平台显示完全正常。
- 对比其他使用相同版本NuGet包的MAUI弹窗项目,未发现该问题;新建项目并复制相同代码后,问题复现。
- 进一步排查发现,Label的垂直居中是相对于整个Popup高度,而非自身设置的HeightRequest范围。
原Popup代码
<?xml version="1.0" encoding="utf-8" ?> <mct:Popup xmlns="http://schemas.microsoft.com/dotnet/2021/maui" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:mct ="clr-namespace:CommunityToolkit.Maui.Views;assembly=CommunityToolkit.Maui" x:Class="Project.Popups.PopUp_Continue" > <VerticalStackLayout HorizontalOptions="Center" VerticalOptions="Fill" x:Name="vStack" HeightRequest="205"> <Label x:Name="Lbl_Message" VerticalOptions="Center" HorizontalOptions="Center" FontAttributes="Bold" FontSize="23" HorizontalTextAlignment="Center" FontAutoScalingEnabled="False" HeightRequest="120" VerticalTextAlignment="Center" Margin="10,10,10,0" /> <HorizontalStackLayout Margin="0,10,0,10" x:Name="hStack" HorizontalOptions="Center" HeightRequest="55"> <Button x:Name="Btn_No" Clicked="Btn_No_Clicked" BackgroundColor="IndianRed" Text="Cancelar" HeightRequest="55" FontSize="20" FontFamily="" FontAttributes="Bold" HorizontalOptions="Center" Margin="0,0,10,0" FontAutoScalingEnabled="False"/> <Button x:Name="Btn_Yes" Clicked="Btn_Yes_Clicked" BackgroundColor="Green" Text="Aceptar" HeightRequest="55" FontSize="20" FontFamily="" FontAttributes="Bold" HorizontalOptions="Center" Margin="10,0,0,0" FontAutoScalingEnabled="False"/> </HorizontalStackLayout> </VerticalStackLayout> </mct:Popup>
显示情况
原效果中Label位置过低,部分内容被Popup底部截断;正常状态下Label应显示在Popup顶部与按钮区域之间的居中位置。
尝试的调整及效果
- 手动调整Label的Margin和Padding后,Label位置上移,但截断问题未完全解决
- 按照@H.A.H.的建议修改代码后,Label位置更接近预期,截断情况有所改善
修改后的代码
<?xml version="1.0" encoding="utf-8" ?> <mct:Popup xmlns="http://schemas.microsoft.com/dotnet/2021/maui" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:mct ="clr-namespace:CommunityToolkit.Maui.Views;assembly=CommunityToolkit.Maui" x:Class="Project.Popups.PopUp_Continue" > <VerticalStackLayout HorizontalOptions="Center" VerticalOptions="Fill" x:Name="vStack" HeightRequest="205"> <Grid HeightRequest="120"> <Label x:Name="Lbl_Message" Margin="0,50,0,50" VerticalOptions="Center" HorizontalOptions="Center" FontAttributes="Bold" FontSize="23" FontAutoScalingEnabled="False" /> </Grid> <HorizontalStackLayout Margin="0,10,0,10" x:Name="hStack" HorizontalOptions="Center" HeightRequest="55"> <Button x:Name="Btn_No" Clicked="Btn_No_Clicked" BackgroundColor="IndianRed" Text="Cancelar" HeightRequest="55" FontSize="20" FontFamily="" FontAttributes="Bold" HorizontalOptions="Center" Margin="0,0,10,0" FontAutoScalingEnabled="False"/> <Button x:Name="Btn_Yes" Clicked="Btn_Yes_Clicked" BackgroundColor="Green" Text="Aceptar" HeightRequest="55" FontSize="20" FontFamily="" FontAttributes="Bold" HorizontalOptions="Center" Margin="10,0,0,0" FontAutoScalingEnabled="False"/> </HorizontalStackLayout> </VerticalStackLayout> </mct:Popup>
内容的提问来源于stack exchange,提问作者Ian
相关产品推荐
相关产品推荐

