Fermer

avril 21, 2021

Démarrez-vous Xamarin Forms? Créons une interface utilisateur simple


Créons ensemble une interface utilisateur simple, améliorons nos compétences XAML et pratiquons la navigation dans Xamarin Forms.

Howdy! «C’est un plaisir pour moi de vous avoir ici. 💚 J'imagine que vous êtes dans cet article car vous débutez dans Xamarin Forms et vous souhaitez améliorer vos connaissances. 💕

Cette fois, nous allons créer une interface utilisateur simple étape par étape, qui nous aidera à améliorer de nombreuses compétences XAML importantes qui nous faciliteront la vie lors du développement d'une interface utilisateur dans Xamarin Forms. Notre conception d'aujourd'hui est obtenue à partir de Dribble créé par l'utilisateur Yana .

Nous allons reproduire cette interface utilisateur et je soulignerai quelques points importants que nous aborderons: [19659003] ✔ Identification de la mise en page principale
✔ Contrôles qui se chevauchent
✔ Gestion de la liste de cartes avec un CollectionView

Alors, commençons! 😎

🔧 Création des paramètres de base

Tout d'abord, ajoutons le package PancakeView Nuget.

 Xamarin.Forms.PancakeView Un ContentView étendu pour Xamarin.Forms avec des coins arrondis, des bordures, des ombres et plus encore!

🔧 Ensuite, ajoutez l'espace de noms suivant:

 xmlns: PanCake = "clr-namespace: Xamarin.Forms.PancakeView; assembly = Xamarin.Forms.PancakeView"

Ajoutez les lignes suivantes, qui nous aideront à masquer la barre d'état sur iOS:

 xmlns: ios = "clr-namespace: Xamarin.Forms.PlatformConfiguration.iOSSpecific; assembly = Xamarin.Forms.Core"
    ios: Page.PrefersStatusBarHidden = "True"
    ios: Page.PreferredStatusBarUpdateAnimation = "Fondu"

Et enfin, réglons notre écran uniquement pour les conceptions verticales. Si vous ne savez pas comment le faire, vous pouvez voir ce message .

🕵 Identifier la mise en page principale

La première étape que nous devons garder à l'esprit est de sélectionner la bonne mise en page . Dans ce cas, nous utiliserons une grille. Si vous voulez en savoir plus sur les grilles, vous pouvez aller ici . Dans l'image suivante, nous allons analyser les colonnes et les lignes nécessaires à notre structure principale.

 La zone de héros au-dessus du pli contient: Ligne 1: Icône + Titre + Image de cercle; Image principale (dans la rangée 1); Ligne 2: Description; Ligne 3: SearchBar. En dessous se trouvent les lignes suivantes: Ligne 4: Titre de la liste; Ligne 5: description de la liste; Rangée 6: Liste des cartes; Ligne 7: Boutons.

Implémentation du code:

    < Grid   RowDefinitions  =  " Auto, Auto, Auto, Auto, Auto, Auto, Auto  " > 
     
 </  Grid > 

✔ Contrôles de chevauchement

Dans ce étape, nous répliquerons les lignes 1, 2 et 3 (comme spécifié dans l'image de structure ci-dessus). L'un des points les plus importants ici est d'apprendre un moyen simple de chevaucher des contrôles. 💪

Ces lignes sont composées des éléments suivants:

  1. Image principale: Comme vous pouvez le voir, cette image a un rayon de coin en bas. C’est pourquoi nous utiliserons PancakeView. À l'intérieur de la structure principale, ajoutez la ligne de code suivante:
 < PanCake:  PancakeView   Grid.Row  =  " 0 "    Grid.RowSpan  =  " 3 "    CornerRadius  =  " 0,0,55,55  " > 
      < Image    Source  = "  Main  "   Aspect  =  " AspectFill "   /> 
 </  PanCake:  PancakeView > 
     

  1. Icône ➕ Titre ➕ Image arrondie:

À obtenir le chevauchement avec l'image ajoutée ci-dessus, il vous suffit d'ajouter la ligne suivante dans le même numéro de couleur utilisé dans l'explication précédente – dans ce cas, le numéro de ligne 0.

Dans cette partie, ajoutons une autre Grille, qui contiendra les trois éléments mentionnés ci-dessus. Il est important de savoir que nous utiliserons également PancakeView pour obtenir l'image arrondie.

    < Grid   Grid.Row  =  " 0  "   ColumnDefinitions  = "  *, *, *  "   Padding  = "  20,40,20,0  " > 
          
           < Image   Grid.Column  = "  0  "   Source  =  " Points "    HorizontalOptions  =  " Start "    HeightRequest  =  " 20 "   /> 
          
           < Label   Grid.Column  =  " 1  "   Text  = "  CardInfo  "   VerticalTextAlignment  = "  Center  "   TextColor  =  " Blanc "    FontAttributes  =  " Gras "    ] HorizontalTextAlignment  =  " Center "   /> 
          
           < PanCake:  PancakeView   Grid.Column  = [19659022] " 2 "    HorizontalOptions  =  " End "    CornerRadius  =  " 25  "    WidthRequest  = "  50  "   HeightRequest  = "  50  " > 
                < Image    Source  = "  Modèle  "   Aspect  = [19659022] " AspectFill "   /> 
           </  PanCake:  PancakeView > 
 </  Grid [19659022]> 
  1. Enfin, Description ➕ SearchBar:

 < Label   Grid.Row  =  " 1 "    Padding [19659021] =  " 0,180,0,0 "    HorizontalTextAlignment  =  " Center "    FontSize [19659021] =  " 23 "    Texte  =  " Don  ' t sais comment exprimer  & # 10;  vos sentiments?  "   TextColor  = "  White  "   FontAttributes  =  " Gras "   /> 

 < SearchBar   Grid.Row  =  " 2 "    BackgroundColor  =  " Transparent "    Margin  =  " 30 "   / > 

À ce stade, nous avons le résultat suivant:

 MainElementsUI "title =" MainElementsUI "data-method =" ResizeFitToAreaArguments "data-customsizemethodproperties =" {"MaxWidth": "", "MaxHeight": "450", "ScaleUp": false, "Quality": "High"} "data-displaymode =" Custom "style =" vertical-align: middle; "/></p data-recalc-dims=

🎯 Gestion de la liste des cartes avec un CollectionView [19659008] Avant la liste des cartes, ajoutons les étiquettes Titre et Description:


   < Libellé   Grid.Row  =  " 3 "    Padding  =  " 30,30,0,10 "    FontSize  =  " 25 "    FontAttributes  = [19659022] " Gras "    Texte  =  " Choisissez votre carte parfaite "   /> 

 < Libellé   Grid.Row  =  " 4 "    Padding  =  " 30,0 "    Texte  =  " Si vous  ' cherchez le moyen idéal d'exprimer ce que vous pensez de quelque chose, une façon simple de vous dire  ' êtes amoureux.  "   TextColor  = "  Silver  "  /> 

Maintenant, continuons avec la liste. Il est important de savoir qu’il a été rendu conforme au modèle MVVM (Model-View-View-Model) (c’est pourquoi les propriétés sont liées). Si vous voulez en savoir plus à ce sujet, vous pouvez visiter ce poste .


   < CollectionView   Grid.Row  =  " 5 " 
        HorizontalScrollBarVisibility  =  " Jamais  " 
        Marge  = "  0,20  "
        ItemsSource  = "  {Reliure cartes}  "
        VerticalOptions  = "  StartAndExpand  "
        ItemsLayout  = "  HorizontalList  " 
        HeightRequest  = [19659022] " 135 "  >  
        < CollectionView.ItemTemplate > 
            < DataTemplate > 
                 < Grille   RowDefinitions  =  " Auto "    Margin  =  " 8,0 "  >  
                     < Frame   Grid.Row  =  " 0 "    HasS hadow  =  " False "    CornerRadius  =  " 20 "    BackgroundColor  =  " # e7ebf1 "    WidthRequest  =  " 95 "    HorizontalOptions  =  ] " Début "  > 
                          < Image   Grid.Row  =  " 0 "    HorizontalOptions  =  " Center "    Source  =  " {Binding Picture} "  [19659020] WidthRequest  =  " 150 "   /> 
                     </  Frame > 
                 </  Grid [19659022]> 
            </  DataTemplate > 
        </  CollectionView.ItemTemplate > 
 </  CollectionView > 

Last Étape: Ajout des boutons du bas!


 < Grid   Grid.Row  =  " 6 "    ColumnDefinitions  =  ] " *, * "  > 
    < Button   Grid.Column  =  " 0 "    Texte  =  " Choisissez un texte "    TextColor  =  " Blanc "    FontAttributes  =  " Gras "    BackgroundColor  =  " # ff5061 "    Margin  =  " 20,0 "    HeightRequest  =  " 60 "    CornerRadius [19659021] =  " 30 "   /> 
    < Button   Grid.Column  =  " 1 "    Texte [19659021] =  " Écrivez votre propre "    TextColor  =  " Black "    BorderColor  =  " # ff5061 "    BorderWidth  =  " 3 "    FontAttributes  =  ] " Gras "    Marge  =  " 20,0 "    HeightRequest  =  "  60  "   CornerRadius  = "  30  "  /> 
 </  Grid > [19659348] ->

Et notre interface utilisateur simple est terminée! 😎

 SecondUI "title =" SecondUI "data-method =" ResizeFitToAreaArguments "data-customsizemethodproperties =" {"MaxWidth": "", "MaxHeight": "450", "ScaleUp": false, "Quality ":" High "}" data-displaymode = "Custom" style = "vertical-align: middle;" /></p data-recalc-dims=

Merci d'avoir lu! 💚💕 Vous pouvez voir le code complet sur mon dépôt Github .

À la prochaine fois! 🤓




Source link