Кнопки Xamarin Forms оказались плоскими внутри сетки - PullRequest
0 голосов
/ 03 июля 2018

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

Мои кнопки стали плоскими, в то время как в stackLayout они выглядят хорошо, но с полем.

Также вы можете видеть, что на первом изображении изображение "D" вырезано снизу, кажется, что есть промежуток между видом прокрутки и кнопками, как я могу удалить его?

Что у меня есть

var consultorButtons = new Grid()
{
    VerticalOptions = LayoutOptions.EndAndExpand,
    HorizontalOptions = LayoutOptions.FillAndExpand,
    Margin = new Thickness(0),
    Padding = new Thickness(0),
    RowSpacing = 0,
    ColumnSpacing = 0,

};

consultorButtons.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Star) });
consultorButtons.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) });
consultorButtons.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) });

consultorButtons.Children.Add(
    new Button
    {
        Text = "TELEFONAR",
        BackgroundColor = Color.FromHex("#21c9ae"),
        HorizontalOptions = LayoutOptions.FillAndExpand,
        VerticalOptions = LayoutOptions.FillAndExpand,
        Margin = new Thickness(0),
        FontSize = 14
    }, 0, 0);

consultorButtons.Children.Add(
    new Button
    {
        Text = "EMAIL",
        BackgroundColor = Color.FromHex("#272f57"),
        HorizontalOptions = LayoutOptions.FillAndExpand,
        VerticalOptions = LayoutOptions.FillAndExpand,
        TextColor = Color.White,
        Margin = new Thickness(0),
        FontSize = 14
    }, 1, 0);

Сетка

Grid

StackLayout

Stack

Ответы [ 2 ]

0 голосов
/ 03 июля 2018

Вы можете изменить высоту строки на Авто, чтобы решить эту проблему:

consultorButtons.RowDefinitions.Add(new RowDefinition { Height = GridLength.Auto });

Чтобы убрать лишний пробел между прокруткой View и кнопками, напишите Spacing="0" в <StackLayout>, внутри которого вы поместили эти два элемента управления.

Надеюсь, что это может решить вашу проблему.

0 голосов
/ 03 июля 2018

Вы не резервируете достаточно места для своей Решетки. Вот почему кнопки сжимаются.

Попробуйте добавить определенную высоту в основную сетку, поскольку ваши дочерние кнопки имеют параметр FillAndExpand.

var consultorButtons = new Grid()
{
    VerticalOptions = LayoutOptions.EndAndExpand,
    HorizontalOptions = LayoutOptions.FillAndExpand,
    Margin = new Thickness(0),
    Padding = new Thickness(0),
    HeightRequest=70, // Have your height request here
    RowSpacing = 0,
    ColumnSpacing = 0,

};

Вы также можете установить RowDefinition на Auto, однако по соображениям производительности это не очень хорошо, так как вы увеличиваете расчеты циклов компоновки.

...