我正在创建我的第一个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>
答案 0 :(得分:1)
最好的选择是为每个单元格定义RowHeight,然后为表格视图指定HeightRequest。这样,您可以定义它将占据的空间
<TableView Margin="0" Intent="Settings" HeightRequest="120" RowHeight="60" VerticalOptions="Start">
答案 1 :(得分:1)
当您询问除了使用TableView
之外还可以做什么时,当然可以使用Grid
,请参见以下示例:
<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和HeightRequest
的{{1}}作为分隔符。您可能必须尝试颜色和高度才能获得所需的结果。低于1
的值是可能的,并导致更细的行。在真实的示例中,我使用了1
。
无论如何,这会使XAML的方式更加混乱。 .5
-设计(当我自己使用它们时)往往变得很笨拙。
答案 2 :(得分:0)
我不确定这是否是您要寻找的东西,但是我对问题的理解告诉我,您正在谈论Value
这个标签正在远离其他标签。
如果您检查此标签的代码:
<Label Text="value" HorizontalOptions="End"></Label>
HorizontalOptions
设置为"End"
,这将导致开始进行更改将解决您的问题
如果我错过了任何内容,请随时还原
祝你好运
答案 3 :(得分:0)
不幸的是,这就是Xamarin.Forms TableView / ListView的工作方式。预计下面没有任何东西。如果您需要以下内容,则可以手动设置TableView的高度,也可以将内容放置在最后一个单元格中,这都不是完美的选择,但是无论如何您都需要寻找一些解决方法,因为这是设计使然(这是一种行为)如果您可以使用ListView而不是TableView,则稍微容易一些。