我正在使用Xamrin在Xaml中创建一个表单,其中包含我隐藏stacklayout的绝对布局。但是在隐藏的stacklayout下方还有一个stacklayout,但是隐藏的stacklayout占用了空间。
我想做什么。当我隐藏一个stacklayout时,另一个stacklayout应该取代隐藏的staklayout。
答案 0 :(得分:2)
感谢您的帮助和支持。
我已经解决了这个问题:
我按照这个链接 https://forums.xamarin.com/discussion/83632/hiding-and-showing-stacklayout 在这个链接中他们说使用网格并使行高自动,它会 自动调整布局的额外空间。
<Grid VerticalOptions="Fill">
<Grid.RowDefinitions>
<RowDefinition Height="100"/>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions> <StackLayout Grid.Row="1" Spacing="20"><StackLayout Margin="10,0">
<Label Text="lable 1" VerticalOptions="Center" FontSize="Small" />
<Label Text="lable 2" VerticalOptions="Center" FontSize="Small" />
</StackLayout>
<StackLayout IsVisible="{Binding IsStudent}" Margin="10,0">
<Label Text="lable3" VerticalOptions="Center" FontSize="Small" />
<Label Text="lable 4" VerticalOptions="Center" FontSize="Small" />
<Label Text="lable 5" VerticalOptions="Center" FontSize="Small" />
<Label Text="lable 6" VerticalOptions="Center" FontSize="Small" />
</StackLayout> </StackLayout> <StackLayout Grid.Row="2" Spacing="20" >
<local:Button x:Name="btnSave" Text="Submit" VerticalOptions="End" HorizontalOptions="FillAndExpand" IsVisible="{Binding IsBusy, Converter={x:Static local:InverseBoolConverter.Instance}}" AutomationId="saveButton" /></StackLayout></Grid>
答案 1 :(得分:2)
不需要网格。 设置IsVisible AND HeightRequest属性。
MyStackLayout.IsVisible = false;
MyStackLayout.HeightRequest = 0; // trigger recalc of space layout.
heightrequest的更改会触发所需的重新计算。
答案 2 :(得分:1)
我也在研究为什么那些隐藏的控件正在占据空间......他们正在占据空间,就是这样。 您可以进行简单的添加和删除标签。像这样:
public class MyStack : StackLayout
{
Label
_label1 = new Label(),
_label2 = new Label(),
_label3 = new Label();
public void ShowLabels()
{
Children.Add(_label1);
Children.Add(_label2);
Children.Add(_label3);
}
public void HideLabels()
{
Children.Remove(_label1);
Children.Remove(_label2);
Children.Remove(_label3);
}
}
答案 3 :(得分:0)
我的推荐是将StackLayout放在内容的底部,以便将其他元素的原始高度保持在顶部。
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="CentroDono.Views.YOURVIEWPAGE"
Title="YOURVIEWTITLE"
x:Name="YOURPAGECONTENTNAME">
<ContentPage.Content>
<StackLayout>
<!--VISIBLE CONTENT-->
<Label Text="HELLO"/>
</StackLayout>
<StackLayout>
<Label Text="FOOTER"/>
<!--INVISIBLE CONTENT-->
<Label x:Name="_searchText" Text="Result1" IsVisible="False"/>
<Label x:Name="_searchText2" Text="Result2" IsVisible="False"/>
<Label x:Name="_searchText3" Text="Result3" IsVisible="False"/>
</StackLayout>
</ContentPage.Content>
</ContentPage>