BoxView

Последнее обновление: 10.01.2021

BoxView представляет прямоугольник. Чаще всего BoxView используется для создания окрашенных областей, либо в качестве декоративного примитивного графического оформления к другим элементам.

Основные свойства класса BoxView:

  • Color: представляет цвет элемента в виде структуры Color.

  • CornerRadius: представляет радиус границы BoxView в виде значения типа float.

  • WidthRequest: представляет ширину элемента (по умолчанию равна 40 единицам).

  • HeightRequest: представляет высоту элемента (по умолчанию равна 40 единицам).

Создание BoxView в xaml:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="HelloApp.MainPage">
    <StackLayout>
        <BoxView Color="LightBlue" WidthRequest="150" HeightRequest="150" CornerRadius="8"
                 HorizontalOptions="Center" VerticalOptions="Center" />
    </StackLayout>
</ContentPage>
Элемент BoxView в Xamarin Forms

Аналогичный пример в коде C#:

using Xamarin.Forms;

namespace HelloApp
{
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();
            BoxView boxView = new BoxView
            {
                Color = Color.LightBlue,
                CornerRadius = 8,
                WidthRequest = 150,
                HeightRequest = 150,
                HorizontalOptions = LayoutOptions.Center,
                VerticalOptions = LayoutOptions.CenterAndExpand
            };
            StackLayout stackLayout = new StackLayout() { Children = { boxView }};
            Content = stackLayout;
        }
    }
}

Также можно использовать BoxView для создания прямоугольного графического декоративного орнамента там, где не нужна сложная графика, а стандартные свойства элементов не позволяют это сделать. Нередко подобным образом BoxView используется в контейнере AbsoluteLayout, так как тот позволяет определить фиксированное положение, но и в других контейнерах также можно применять. Например, нам надо начертить двойную линию:

BoxView in Xamarin

Пример в xaml:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="HelloApp.MainPage">
    <StackLayout Padding="20">
        <Frame BorderColor="Gray" BackgroundColor="#e1e1e1" CornerRadius="8">
            <StackLayout>
                <Label Text="METANIT.COM" FontSize="Title" HorizontalOptions="Center"  />
                <BoxView Color="Gray"  HeightRequest="2" HorizontalOptions="Fill" />
                <BoxView Color="Gray"  HeightRequest="2" HorizontalOptions="Fill" />
                <Label Text="Руководство по Xamarin Forms" FontSize="Large" HorizontalOptions="Center"  />
            </StackLayout>
        </Frame>
    </StackLayout>
</ContentPage>

Аналогичный пример в C#:

using Xamarin.Forms;

namespace HelloApp
{
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            //InitializeComponent();
            Label label1 = new Label
            {
                Text = "METANIT.COM",
                FontSize = Device.GetNamedSize(NamedSize.Title, typeof(Label)),
                HorizontalOptions = LayoutOptions.Center
            };
            Label label2 = new Label
            {
                Text = "Руководство по Xamarin Forms",
                FontSize = Device.GetNamedSize(NamedSize.Large, typeof(Label)),
                HorizontalOptions = LayoutOptions.Center
            };
            BoxView boxView1 = new BoxView
            {
                Color = Color.Gray,
                HeightRequest = 2,
                HorizontalOptions = LayoutOptions.Fill
            };
            BoxView boxView2 = new BoxView
            {
                Color = Color.Gray,
                HeightRequest = 2,
                HorizontalOptions = LayoutOptions.Fill
            };
            StackLayout innerStackLayout = new StackLayout { Children = { label1, boxView1, boxView2, label2 } };
            Frame frame = new Frame
            {
                Content = innerStackLayout,
                BorderColor = Color.Gray,
                BackgroundColor = Color.FromHex("#e1e1e1"),
                CornerRadius = 8
            };
            
            StackLayout stackLayout = new StackLayout() { Children = { frame }, Padding = 20};
            Content = stackLayout;
        }
    }
}
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850