Xamarin Forms 按钮在 Grid 内变平

Xamarin Forms buttons got flat inside Grid

你好,我正在尝试实现一个没有边距的底部按钮栏,但行为不是预期的。

我的按钮在 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);

网格

堆栈布局

您没有为您的网格预留足够 space。这就是按钮缩小的原因。

尝试向主网格添加特定高度,因为您的子按钮具有 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,但是,出于性能考虑,不是很好,因为你增加了layout cicle的计算。

您可以像这样将行高更改为自动来解决您的问题:

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

要删除滚动视图和按钮之间的额外 space,请在 <StackLayout> 中写入 Spacing="0",您已在其中放置了这两个控件。

希望这可以解决您的问题。