代码之家  ›  专栏  ›  技术社区  ›  Tiago_nes

Xamarin表单按钮在网格内变平

  •  2
  • Tiago_nes  · 技术社区  · 6 年前

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

    我的纽扣在堆叠布局时变平了,看起来不错,但有边距。

    你还可以看到,在第一个图像的“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

    堆垛布局

    Stack

    2 回复  |  直到 6 年前
        1
  •  3
  •   MShah    6 年前

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

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

    删除滚动视图和按钮之间的额外空间 Spacing="0" <StackLayout> ,其中放置了这两个控件。

    希望这能解决你的问题。

        2
  •  1
  •   Tiago_nes    6 年前

    您没有为网格保留足够的空间。这就是扣子缩水的原因。

    尝试向主网格添加特定高度,因为您的子按钮具有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计算。