【问题标题】:Collapse Labels and ListViews in Xamarin Forms在 Xamarin 表单中折叠标签和 ListView
【发布时间】:2020-08-14 18:42:35
【问题描述】:

我有一个相对简单的视图,看起来像这样:

{Label1}
{Label2}
{ListView1}
{Label3}
{ListView2}

Label2 和 ListView1 的 IsVisible 属性绑定到 bool 属性。当为 false 时,它​​们不会出现,但是它们会占用 UI 上的空间,这意味着 Label1 和 Label3 之间存在相当大的差距,如下所示:

{Label1}


{Label3}
{ListView2}

我怎样才能让它们看起来像这样:

{Label1}
{Label3}
{ListView2}

我的 XAML 代码如下所示:

<AbsoluteLayout
    HorizontalOptions="FillAndExpand"
    VerticalOptions="FillAndExpand">

    <Grid
        HorizontalOptions="FillAndExpand"
        VerticalOptions="FillAndExpand"
        AbsoluteLayout.LayoutFlags="All"
        AbsoluteLayout.LayoutBounds="0,0,1,1">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>

        <Label 
            Text="Title" 
            HorizontalOptions="Center"
            VerticalOptions="Center"
            TextColor="White"
            FontSize="Large"
            FontAttributes="Bold"
            Margin="5"
            BindingContext="{x:Reference DashboardPageView}"
            IsVisible="{Binding DisplayFloatingTitle}"
            Grid.Row="0" />

        <Label 
            Text="Notifications" 
            HorizontalOptions="Start"
            VerticalOptions="Center"
            TextColor="White"
            FontSize="Medium"
            FontAttributes="Bold"
            Margin="3"
            IsVisible="{Binding HasNotifications}"
            Grid.Row="1" />

        <ListView Grid.Row="2" 
                  ItemsSource="{Binding Notifications}" 
                  HasUnevenRows="True" 
                  VerticalOptions="Start"
                  IsVisible="{Binding HasNotifications}"
                  SeparatorVisibility="None" Margin="1,0"
                  x:Name="NotificationsList">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        ........
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>

        <Label 
            Text="Activities" 
            HorizontalOptions="Start"
            VerticalOptions="Start"
            TextColor="White"
            FontSize="Medium"
            FontAttributes="Bold"
            Margin="3"
            IsVisible="{Binding HasActivities}"
            Grid.Row="3" />

        <ListView Grid.Row="4" 
                  ItemsSource="{Binding Activities}" 
                  HasUnevenRows="True" 
                  VerticalOptions="Start"
                  SeparatorVisibility="None" Margin="4,0"
                  x:Name="ActivitiesList">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        ....
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </Grid>
</AbsoluteLayout>

【问题讨论】:

  • 尝试在第三行使用Height="Auto"
  • 谢谢。能否请您发表一个答案。

标签: xaml xamarin.forms


【解决方案1】:

问题在于您的 XAML 中的这一行:

<RowDefinition Height="*" />

它设置为*,这意味着它将占用它可以获得的所有剩余空间。如果您希望该行的内容自动调整为内容大小,您应该使用Auto:

<RowDefinition Height="Auto" />

【讨论】:

    猜你喜欢
    • 2018-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 2020-11-14
    • 1970-01-01
    • 1970-01-01
    • 2019-04-29
    相关资源
    最近更新 更多