Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xaml Xamarin.表单布局问题_Xaml_Listview_Xamarin.android_Xamarin.forms - Fatal编程技术网

Xaml Xamarin.表单布局问题

Xaml Xamarin.表单布局问题,xaml,listview,xamarin.android,xamarin.forms,Xaml,Listview,Xamarin.android,Xamarin.forms,我试图在Xamarin.Forms中生成一个简单的表单,它将显示一个具有自定义页眉(允许数据输入)和自定义页脚(包含“取消”/“继续”按钮)的ListView。但是,我无法让ListView垂直填充表单(我希望表单底部有“取消”/“继续”按钮,而不管列表的长度如何 哪里出了问题?我几乎尝试了ListView上的所有垂直选项组合,但最终总是在“确定”按钮的正下方出现“取消”/“继续”按钮 <?xml version="1.0" encoding="utf-8" ?> <Conte

我试图在Xamarin.Forms中生成一个简单的表单,它将显示一个具有自定义页眉(允许数据输入)和自定义页脚(包含“取消”/“继续”按钮)的ListView。但是,我无法让ListView垂直填充表单(我希望表单底部有“取消”/“继续”按钮,而不管列表的长度如何

哪里出了问题?我几乎尝试了ListView上的所有垂直选项组合,但最终总是在“确定”按钮的正下方出现“取消”/“继续”按钮

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage x:Class="MyCompany.Views.MyPage"
                         xmlns="http://xamarin.com/schemas/2014/forms"
                         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
                         Title="{Binding Path=Title}">

    <ListView Margin="15" VerticalOptions="FillAndExpand">

        <ListView.HeaderTemplate>
            <DataTemplate>

                <StackLayout VerticalOptions="Start">
                    <Label HorizontalTextAlignment="Center" Text="Type something" />
                    <Entry />
                    <Button HorizontalOptions="Center" Text="Ok" />
                </StackLayout>

            </DataTemplate>
        </ListView.HeaderTemplate>

        <ListView.FooterTemplate>
            <DataTemplate>

                <Grid VerticalOptions="End">

                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="*" />
                        <ColumnDefinition Width="2*" />
                        <ColumnDefinition Width="*" />
                        <ColumnDefinition Width="2*" />
                        <ColumnDefinition Width="*" />
                    </Grid.ColumnDefinitions>

                    <Button Grid.Column="1" Text="Cancel" />
                    <Button Grid.Column="3" Text="Complete" />

                </Grid>

            </DataTemplate>
        </ListView.FooterTemplate>

    </ListView>

</ContentPage>


作为记录,该应用程序(目前)在Android上运行,但我不认为这会有任何区别。

我也不能使用页眉和页脚来运行它。或者,您也可以将其包装在网格中,如下所示:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="*" />
        <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>
    <StackLayout Grid.Row="0" VerticalOptions="Start">
        <Label HorizontalTextAlignment="Center" Text="Type something" />
        <Entry />
        <Button HorizontalOptions="Center" Text="Ok" />
    </StackLayout>
    <ListView Grid.Row="1" ItemsSource="{Binding .}" Margin="15" VerticalOptions="FillAndExpand" />
    <Grid Grid.Row="2" VerticalOptions="End" HeightRequest="40">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="2*" />
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="2*" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>

        <Button Grid.Column="1" Text="Cancel" />
        <Button Grid.Column="3" Text="Complete" />
    </Grid>
</Grid>

更新:我注意到的
列表视图的行为是,它将页脚直接放在
列表视图中最后一项的后面。因此,如果您的
列表视图
只有4项,它会将页眉直接放在后面。尝试给页脚和
列表视图
一个背景色,您可能会看到大概是这样的:


我认为,如果不按照我建议的网格路线,这种行为是无法改变的。

我也无法使用页眉和页脚使其正常运行。或者,您也可以将其包装在网格中,如下所示:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="*" />
        <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>
    <StackLayout Grid.Row="0" VerticalOptions="Start">
        <Label HorizontalTextAlignment="Center" Text="Type something" />
        <Entry />
        <Button HorizontalOptions="Center" Text="Ok" />
    </StackLayout>
    <ListView Grid.Row="1" ItemsSource="{Binding .}" Margin="15" VerticalOptions="FillAndExpand" />
    <Grid Grid.Row="2" VerticalOptions="End" HeightRequest="40">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="2*" />
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="2*" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>

        <Button Grid.Column="1" Text="Cancel" />
        <Button Grid.Column="3" Text="Complete" />
    </Grid>
</Grid>

更新:我注意到的
列表视图的行为是,它将页脚直接放在
列表视图中最后一项的后面。因此,如果您的
列表视图
只有4项,它会将页眉直接放在后面。尝试给页脚和
列表视图
一个背景色,您可能会看到大概是这样的:


我不认为不按照我建议的网格路线就可以改变这种行为。

谢谢Steven,我知道我可以用网格来做,实际上我已经用StackLayout做了,我只是不明白为什么我不能在ListView中简单地做这一切。谢谢Steven,我知道我可以用网格来做,实际上我已经用堆栈来做了布局,我就是不明白为什么我不能简单地在ListVIEW里面做所有的事情。如果答案对你有帮助,请考虑标记为答案。