Xaml Xamarin表单-TableView下不需要的额外空间

Xaml Xamarin表单-TableView下不需要的额外空间,xaml,xamarin.forms,tableview,Xaml,Xamarin.forms,Tableview,我正在创建我的第一个Android应用程序。我想用一些输入字段显示TableView,然后用一个按钮来处理输入。 我不知道为什么,但是TableView下有额外的空间,或者按钮与底部对齐,但与设置相反 你能帮我修一下吗 <StackLayout Orientation="Vertical" VerticalOptions="Start" Padding="20,15,20,0" Spacing="0">

我正在创建我的第一个Android应用程序。我想用一些输入字段显示TableView,然后用一个按钮来处理输入。 我不知道为什么,但是TableView下有额外的空间,或者按钮与底部对齐,但与设置相反

你能帮我修一下吗

<StackLayout Orientation="Vertical" VerticalOptions="Start"  Padding="20,15,20,0" Spacing="0">
    <Label Text="This is TableView"></Label>
    <TableView Intent="Settings" VerticalOptions="Start">
        <TableRoot>
            <TableSection>
                <ViewCell>
                    <StackLayout Orientation="Horizontal">
                        <Label Text="item 1"/>
                        <Entry></Entry>
                    </StackLayout>
                </ViewCell>
                <ViewCell>
                    <StackLayout Orientation="Horizontal">
                        <Label Text="item 2"/>
                        <Entry></Entry>
                    </StackLayout>
                </ViewCell>
            </TableSection>
        </TableRoot>
    </TableView>
    <Label Text="TableView - END"></Label>
    <Button Text="My button" TextColor="DodgerBlue" VerticalOptions="Start" HorizontalOptions="Fill" Margin="40, 10, 40, 10"/>

    <Frame VerticalOptions="StartAndExpand" BackgroundColor="Transparent" BorderColor="Black">
        <StackLayout Orientation="Vertical">
            <StackLayout Orientation="Horizontal" HorizontalOptions="Fill">
                <Label Text="aaaa" HorizontalOptions="StartAndExpand"></Label>
                <Label Text="value" HorizontalOptions="End"></Label>
            </StackLayout>
            <StackLayout Orientation="Horizontal">
                <Label Text="aaaa"></Label>
                <Label Text="value"></Label>
            </StackLayout>
            <StackLayout Orientation="Horizontal">
                <Label Text="aaaa"></Label>
                <Label Text="value"></Label>
            </StackLayout>
        </StackLayout>
    </Frame>
</StackLayout>



最好的选择是为每个单元格定义行高,然后为tableview指定HeightRequest。这样可以定义它将占用的空间

<TableView Margin="0" Intent="Settings"  HeightRequest="120" RowHeight="60" VerticalOptions="Start">

最好的选择是为每个单元格定义行高,然后为tableview指定HeightRequest。这样可以定义它将占用的空间

<TableView Margin="0" Intent="Settings"  HeightRequest="120" RowHeight="60" VerticalOptions="Start">

我不确定这是否是您想要的,但我对这个问题的理解告诉我,您所说的标签
与其他标签不同

如果检查此标签的代码:

  <Label Text="value" HorizontalOptions="End"></Label>

horizontalpoptions
设置为
“End”
,这会导致将其更改为启动将解决您的问题

如果我遗漏了什么,请随时回复


Goodluck

我不确定这是否是你想要的,但我对这个问题的理解告诉我,你说的是标签
与其他值不同

如果检查此标签的代码:

  <Label Text="value" HorizontalOptions="End"></Label>

horizontalpoptions
设置为
“End”
,这会导致将其更改为启动将解决您的问题

如果我遗漏了什么,请随时回复


Goodluck

不幸的是,Xamarin.Forms TableView/ListView就是这样工作的。预计它下面不会有任何东西。如果您需要下面的内容,您可以手动设置TableView的高度,也可以将内容放在最后一个单元格中,这两种方法都不完美,但无论如何,您都需要寻找一些解决方法,因为这是设计行为(如果您可以使用ListView而不是TableView,会更容易一些)。

不幸的是,这就是Xamarin.Forms TableView/ListView的工作原理。预计它下面不会有任何东西。如果您需要下面的内容,您可以手动设置TableView的高度,也可以将内容放在最后一个单元格中,这两种方法都不完美,但在任何情况下,您都需要寻找一些解决方法,因为这是设计行为(如果您可以使用ListView而不是TableView,这会更容易一些).

当您询问除了使用
表视图
之外还可以做什么时,当然可以使用
网格
,请参见以下示例:

<Grid VerticalOptions="StartAndExpand">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto" /> <!-- for the label -->
        <ColumnDefinition Width="*" />
    <Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="*" />
        <RowDefinition Height="1" /> <!-- For the separator, you might have to experiment with the height -->
        <RowDefinition Height="*" /> 
        <RowDefinition Height="1" />
    </Grid.RowDefinitions>
    <Label Text="Item 1" />
    <Entry Grid.Row="0" Grid.Column="1" />
    <BoxView BackgroundColor="Black" 
             HeightRequest="1" 
             Grid.Row="1" 
             Grid.Column="0" 
             Grid.ColumnSpan="2" /> <!-- The separator -->
    <Label Grid.Row="2" Grid.Column="0" Text="Item 2" />
    <Entry Grid.Row="2" Grid.Column="1" />
    <BoxView BackgroundColor="Black" 
             HeightRequest="1" 
             Grid.Row="3" 
             Grid.Column="0" 
             Grid.ColumnSpan="2" /> <!-- The separator -->
</Grid>

我正在使用黑色背景色的
BoxView
s和
1
HeightRequest
作为分隔符。您可能需要对颜色和高度进行实验,以获得所需的结果。低于
1
的值可能会产生更细的线条。在一个真实的例子中,我使用了
.5


无论如何,这使得XAML方式更加混乱<代码>网格-设计(我自己使用它们时)往往会变得非常笨拙。

当您询问除了使用
表格视图
,您还可以做什么时,当然可以使用
网格
,请参见以下示例:

<Grid VerticalOptions="StartAndExpand">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto" /> <!-- for the label -->
        <ColumnDefinition Width="*" />
    <Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="*" />
        <RowDefinition Height="1" /> <!-- For the separator, you might have to experiment with the height -->
        <RowDefinition Height="*" /> 
        <RowDefinition Height="1" />
    </Grid.RowDefinitions>
    <Label Text="Item 1" />
    <Entry Grid.Row="0" Grid.Column="1" />
    <BoxView BackgroundColor="Black" 
             HeightRequest="1" 
             Grid.Row="1" 
             Grid.Column="0" 
             Grid.ColumnSpan="2" /> <!-- The separator -->
    <Label Grid.Row="2" Grid.Column="0" Text="Item 2" />
    <Entry Grid.Row="2" Grid.Column="1" />
    <BoxView BackgroundColor="Black" 
             HeightRequest="1" 
             Grid.Row="3" 
             Grid.Column="0" 
             Grid.ColumnSpan="2" /> <!-- The separator -->
</Grid>

我正在使用黑色背景色的
BoxView
s和
1
HeightRequest
作为分隔符。您可能需要对颜色和高度进行实验,以获得所需的结果。低于
1
的值可能会产生更细的线条。在一个真实的例子中,我使用了
.5


无论如何,这使得XAML方式更加混乱<代码>网格-设计(当我自己使用它们时)往往变得相当笨拙。

不,情况并非如此。问题在于表视图和按钮之间的空白。抱歉搞混了。不,不是这样的。问题在于表视图和按钮之间的空白。很抱歉造成混淆。你能建议我用什么代替TableView吗?我在考虑网格,但是没有行-行分隔符,我想要它。你能建议我用什么来代替TableView吗?我在考虑网格,但并没有行分隔符,我想有它。