Xamarin Forms按钮在网格内平放

时间:2018-07-03 09:16:49

标签: gridview xamarin.forms stacklayout

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

在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 :(得分:3)

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

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

要删除滚动视图和按钮之间的多余空间,请在Spacing="0"中写入<StackLayout>,并在其中放置这两个控件。

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

答案 1 :(得分:1)

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

尝试将特定高度添加到主网格,因为您的子按钮具有选项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,但是由于性能原因,它并不是很好,因为您正在增加布局cicle的计算。