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"
,您已在其中放置了这两个控件。
希望这可以解决您的问题。
你好,我正在尝试实现一个没有边距的底部按钮栏,但行为不是预期的。
我的按钮在 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"
,您已在其中放置了这两个控件。
希望这可以解决您的问题。