web-dev-qa-db-fra.com

Séparateurs dans Xamarin.Forms

Je voudrais utiliser séparateur horizontal lignes dans un formulaire. Pour autant que je sache, Xamarin.Forms n'en fournit pas.

Quelqu'un pourrait-il fournir un extrait de code pour les séparateurs?

MISE À JOUR 1

Selon la proposition de Jason, cela a l'air bien:

// draws a separator line and space of 5 above and below the separator    
new BoxView() { Color = Color.White, HeightRequest = 5  },
new BoxView() { Color = Color.Gray, HeightRequest = 1, Opacity = 0.5  },
new BoxView() { Color = Color.White, HeightRequest = 5  },

Rend la ligne de séparation ci-dessous:

enter image description here

29
SteAp

Vous pouvez essayer d'utiliser BoxView

// sl is a StackLayout
sl.Children.Add(new BoxView() { Color = Color.Black, WidthRequest = 100, HeightRequest = 2 });

bien que dans mon test, la demande de largeur ne soit pas suivie. Cela peut être un bogue ou d’autres paramètres peuvent l’interférer.

39
Jason

Il existe actuellement une méthode pour afficher les séparateurs dans Xamarin.Forms:

myListView.SeparatorVisibility = Xamarin.Forms.SeparatorVisibility.Default;
myListView.SeparatorColor = Color.FromHex("C8C7CC");

Et pour cacher:

myListView.SeparatorVisibility = Xamarin.Forms.SeparatorVisibility.None;

J'espère que ça aide!

9
barrast

@Jason En plus de Jason answer, vous devez configurer VerticalOptions pour qu'il puisse utiliser HeightRequest, et HorizontalOptions pour pouvoir utiliser WidthRequest. les valeurs par défaut sont fill, c’est pourquoi il ne répond pas . Exemple de sortie

<BoxView   VerticalOptions="Center"
           HorizontalOptions="Center"
           HeightRequest="1"
           WidthRequest="50"  
           Color="#5b5d68"></BoxView>

 enter image description here

6
Umit

Ajouter une pile de 1 pixel fonctionne pour moi (dans une pile verticale):

// Add a black line
MyVerticalStackLayout.Children.Add(
    new StackLayout { 
        HeightRequest = 1, 
        BackgroundColor = Color.Black, 
        HorizontalOptions = LayoutOptions.FillAndExpand
     }    
);
3
noelicus

Une autre façon d'implémenter BoxView dans un StackLayout en utilisant Xaml.

Cela devrait le faire

<StackLayout Orientation="Vertical">
       <Label HorizontalTextAlignment="Center" Text="Header" />
       <BoxView HeightRequest="1" BackgroundColor="Black" HorizontalOptions="FillAndExpand" />
</StackLayout>
2

vous pouvez y parvenir grâce à StackLayout. Définissez un StackLayout ayant une hauteur de 1 px et une largeur de 320 px (taille de l'écran de l'iPhone), puis ajoutez-le à la mise en page parent qui vous aidera.

StackLayout myLayout = new StackLayout();
myLayout.HeightRequest=1;
myLayout.WidthRequest=320;
myLayout.BackgroundColor= Color.Black;
parentLayout.Children.Add("myLayout");
2
Vinit Saxena

Vous pouvez également utiliser un package NuGet Xamarin.Forms.Lab qui contient autant de contrôles personnalisés qui facilitent le codage. 

Également dans ce paquet, il y a un nom de contrôle avec un séparateur qui peut vous aider.

Vous pouvez télécharger le package à partir de ce lien: https://www.nuget.org/packages/XLabs.Forms/

0
vishal bagdai