Подтвердить что ты не робот

Сепараторы в Xamarin.Forms

Я хотел бы использовать строки горизонтального разделителя в форме. Насколько я понял, Xamarin.Forms не предоставляет его.

Может ли кто-нибудь предоставить фрагмент для разделителей?

ОБНОВЛЕНИЕ 1

Согласно предложению Джейсона, это выглядит прекрасно:

// 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  },

Отображает нижнюю разделительную линию:

enter image description here

4b9b3361

Ответ 1

Вы можете попробовать использовать BoxView

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

хотя в моем тесте запрос ширины не соблюдается. Это может быть ошибка, или другие настройки могут мешать ей.

Ответ 2

Фактически существует метод отображения разделителей в Xamarin.Forms:

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

И скрыть:

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

Надеюсь, что это поможет!

Ответ 3

@Jason В дополнение к ответу Джейсона вы должны установить VerticalOptions, чтобы иметь возможность использовать HeightRequest, и установите HorizontalOptions, чтобы иметь возможность использовать WidthRequest. значения по умолчанию заполняются, поэтому он не отвечает. Пример вывода

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

введите описание изображения здесь

Ответ 4

Добавление 1-пиксельного стека работает для меня (в вертикальном стеке):

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

Ответ 5

вы можете достичь этого через StackLayout. Определите StackLayout с высотой 1 px и шириной 320 пикселей (размер экрана iPhone), а затем добавьте его в родительский макет, который поможет вам.

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

Ответ 6

Еще один способ реализации BoxView в StackLayout с использованием Xaml.

Это должно сделать это

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

Ответ 7

Вы также можете использовать пакет NuGet Xamarin.Forms.Lab который содержит так много пользовательских элементов управления, которые помогают при кодировании.

Также в этом пакете есть имя элемента управления с разделителем, который может вам помочь.

Вы можете скачать пакет по этой ссылке: https://www.nuget.org/packages/XLabs.Forms/

Ответ 8

Вы можете добавить свойство родительского макета ваших элементов управления с помощью разделителя и цвета сепаратора. это свойство доступно в stacklayout, grid, listview

Ответ 9

Вы можете определить свою собственную разделительную линию в файле app.xaml.

<Style x:Key="Separator" TargetType="BoxView">
            <Setter Property="HeightRequest" Value="1" />
            <Setter Property="HorizontalOptions" Value="FillAndExpand" />
            <Setter Property="Color" Value="Gray" />
            <Setter Property="Margin" Value="0, 5, 0, 5" />
            <Setter Property="Opacity" Value="0.5" />
</Style>

И используйте это как стиль.

<BoxView Style="{StaticResource Separator}" />