[英]Xamarin Forms Listview in StackLayout Overlapping Layout Above It
[英]Xamarin Forms: Help needed with layout on a ListView inside a StackLayout
我正在嘗試創建一個視圖,該視圖具有幾個位於StackLayout內部的控件。 當我只有一個這樣的人時:
<StackLayout Orientation="Vertical" HorizontalOptions="Center" >
<controls:BindablePicker />
</StackLayout>
工作正常: 居中
但是,當我嘗試添加ListView時,例如:
<StackLayout Orientation="Vertical" HorizontalOptions="Center" >
<controls:BindablePicker />
<ListView HorizontalOptions="Center" >
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<ViewCell.View>
<StackLayout Orientation="Horizontal">
<controls:BindablePicker Title="Length" />
<controls:BindablePicker Title="Units" />
</StackLayout>
</ViewCell.View>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
一切都左對齊並占據整個屏幕: 左對齊
我希望所有控件的寬度在屏幕上盡可能短。 現在,我正在使用ListView,因為我要綁定對象列表,並且我認為這比嘗試使用Grid容易。
任何建議將不勝感激。 謝謝。
更新我更新了ViewCell,用網格替換了StackLayout,然后將ListView放在網格內,如下所示:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="2*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<ListView Grid.Row="0" Grid.Column="1" HorizontalOptions="Center" SeparatorVisibility="None">
這幾乎是我想要的,除了頂部選擇器占用了屏幕的整個寬度,而不是只需要將其居中並居中。
您的第一個StackLayout示例和第二個StackLayout示例(ViewCell內部的示例)之間有一個小的差異,這導致您遇到麻煩:
Orientation="Vertical"
Orientation="Horizontal"
Xamarin.Forms中的StackLayouts僅在Orientation="Vertical"
時才使用HorizontalOptions
屬性,而在Orientation="Horizontal"
時才使用VerticalOptions
屬性。
StackLayouts的這種“功能”沒有得到很好的記錄,我找不到指定它的示例鏈接。 我個人是在Xamarin大學的一次課堂上從老師那里學到這一事實的。
要居中放置ViewCell的控件,請使用Grid布局而不是StackLayout。 這是一個例子:
http://www.trsneed.com/customize-xamarin-forms-listview-with-viewcell/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.