有很多不同的解决方案可以解决 iOS 和 Android 之间的 UI 显示问题。
例如
选项 1:
您可以使用 Xamarin.Essentials 包获取屏幕大小,然后设置图像的百分比(使用数据绑定)。
// Get Metrics
var mainDisplayInfo = DeviceDisplay.MainDisplayInfo;
// Orientation (Landscape, Portrait, Square, Unknown)
var orientation = mainDisplayInfo.Orientation;
// Rotation (0, 90, 180, 270)
var rotation = mainDisplayInfo.Rotation;
// Width (in pixels)
var width = mainDisplayInfo.Width;
// Height (in pixels)
var height = mainDisplayInfo.Height;
// Screen density
var density = mainDisplayInfo.Density;
选项 2:
您可以直接将 Image 的大小绑定到其父级。
public class SizeConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return value / 2.0= 0;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return 0;
}
}
在 xaml 中
<ContentPage.Resources>
<ResourceDictionary>
<local:SizeConverter x:Key="sizeConvert" />
</ResourceDictionary>
</ContentPage.Resources>
<StackLayout x:Name="stackLayout" VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand">
<Image Source="xxx" HeightRequest="{Binding Source={x:Reference stackLayout}, Path=Height,Converter={StaticResource sizeConvert}}" WidthRequest="{Binding Source={x:Reference stackLayout}, Path=Width,Converter={StaticResource sizeConvert}}" />
</StackLayout>