Dans l'application que je développe, je veux avoir une valeur de traduction relative afin d'avoir un centre de contrôle réactif sur mon application qui ne couvre pas l'écran entier et peut être utilisé en tapitant dessus. J'ai donc écrit le code ci-dessous mais la valeur de la technologie n'est pas relative et en tapant le clavier couvre le centre de contrôle. Existe-t-il un moyen d'obtenir le nombre de hauteur disponible de l'écran et de donner un rapport à la cornue.
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:d="http://xamarin.com/schemas/2014/forms/design" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:map="clr-namespace:Xamarin.Forms.Maps;assembly=Xamarin.Forms.Maps" xmlns:pan ="http://xamarin.com/schemas/2014/forms" xmlns:yummy="clr-namespace:Xamarin.Forms.PancakeView;assembly=Xamarin.Forms.PancakeView" mc:Ignorable="d" x:Class="GreenPath.MainPage"> <Grid> <StackLayout VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand"> <map:Map MapType="Street" VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand"/> </StackLayout> <yummy:PancakeView CornerRadius="25,25,0,0" Opacity="0.8" HorizontalOptions="FillAndExpand" BackgroundColor="White" TranslationY="550"> <StackLayout VerticalOptions="FillAndExpand" Orientation="Vertical" Margin="5"> <Image Source="down.png" VerticalOptions="Center" HorizontalOptions="Center" Scale="1"/> <Label Text="X" TextColor="#3E454F" FontSize="40" FontFamily="segoeui.ttf" Margin="10,0"/> <SearchBar FontFamily="segoeui.ttf" Text="X" VerticalTextAlignment="Center" VerticalOptions="Fill" HorizontalTextAlignment="Start" IsReadOnly="True" HorizontalOptions="Fill" SearchButtonPressed="SearchBar_SearchButtonPressed" PlaceholderColor="#3E454F" TextColor="#3E454F" CancelButtonColor="#3E454F" Visual="Material" Keyboard="Default" Placeholder="Search a location" IsEnabled="True"/> <Label Text="X" FontFamily="segoeui.ttf" FontSize="25" VerticalOptions="Center" TextColor="#3E454F" Margin="10,0"/> <Grid Grid.Row="1" ColumnSpacing="0"> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"/> <ColumnDefinition Width="*"/> <ColumnDefinition Width="*"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <Image Source="add.png" VerticalOptions="Center" HorizontalOptions="Center" Scale="1" Grid.Column="0" /> <Image Source="add.png" VerticalOptions="Center" HorizontalOptions="Center" Scale="1" Grid.Column="1" /> <Image Source="add.png" VerticalOptions="Center" HorizontalOptions="Center" Scale="1" Grid.Column="2" /> <Image Source="add.png" VerticalOptions="Center" HorizontalOptions="Center" Scale="1" Grid.Column="3" /> <Image Source="add.png" VerticalOptions="Center" HorizontalOptions="Center" Scale="1" Grid.Column="4" /> </Grid> </StackLayout> </yummy:PancakeView> </Grid> </ContentPage>
3 Réponses :
du backend Vous pouvez remplacer la méthode OnsizeAnlocated.
protected override void OnSizeAllocated(double width, double height) { base.OnSizeAllocated(width, height); }
in app.xaml.cs
Ensemble: p> pour Android: p> pour iOS: p> afin que vous puissiez utiliser dans votre xaml comme ceci: p>
Vous pouvez obtenir les informations d'écran de périphérique en utilisant xamarin.essentials: Informations d'affichage de périphérique :
Donnez un nom à Délicieux: PANCAKEVIEW CODE>: P>
public MainPage()
{
InitializeComponent();
var mainDisplayInfo = DeviceDisplay.MainDisplayInfo;
// Width (in pixels)
var width = mainDisplayInfo.Width;
// Height (in pixels)
var height = mainDisplayInfo.Height;
// Screen density
var density = mainDisplayInfo.Density;
var screenW = 0;
var screenH =0;
if (density != 0)
{
screenW = (int)(width / density);
screenH = (int)(height / density);
}
pancakeView.TranslationY = 550 * 550 / screenH;
}
Vous pouvez le faire au backend