0
votes

Comment obtenir la valeur de la taille de l'écran disponible dans une application multiplate-forme de Xamarin Formulaires dans un fichier .xaml?

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>


1 commentaires

Vous pouvez le faire au backend


3 Réponses :


0
votes

du backend Vous pouvez remplacer la méthode OnsizeAnlocated.

    protected override void OnSizeAllocated(double width, double height)
    {
        base.OnSizeAllocated(width, height);
    }


0 commentaires

0
votes

in app.xaml.cs

Ensemble: xxx

pour Android: xxx

pour iOS: xxx

afin que vous puissiez utiliser dans votre xaml comme ceci: xxx


0 commentaires

0
votes

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;
}


0 commentaires