0
我正在一個頁面上,它需要嵌套的ListViews。我注意到我的佈局被一個StackLayout中的一個ListView扭曲,這消耗了比條目所需的更多空間。我如何使我的ListView消耗Xamarin.Forms所需的小空間
事實證明,即使沒有任何條目,在Xamarin上,ListView佔用的空間比它可能需要的更多。
有誰知道如何擺脫這種行爲?
WPF(這使得精):
<StackPanel Background="Green">
<Label Content="hi" Background="Aqua"></Label>
<ListView Background="Red"></ListView>
</StackPanel>
Xamarin:
public class CustomListView : ListView
{
public override SizeRequest GetSizeRequest(double widthConstraint, double heightConstraint)
{
var sizeRequest = base.GetSizeRequest(widthConstraint, heightConstraint);
var b = this.Behaviors;
return sizeRequest;
}
}
public class App : Application
{
public App()
{
// The root page of your application
MainPage = new ContentPage
{
BackgroundColor = Color.Green,
Content = new StackLayout
{
VerticalOptions = LayoutOptions.Start,
BackgroundColor = Color.Aqua,
Children = {
new Label {
XAlign = TextAlignment.Center,
Text = "Welcome to Xamarin Forms!"
}, new CustomListView()
{
BackgroundColor = Color.Red,
VerticalOptions = LayoutOptions.Start
}
}
}
};
}
}
在WPF中,你可以看到結果,我所期望的,如果ListView顯示在StackLayout中 - 目前爲止我無法使用測量孩子並相應地返回SizeRequest以解決此問題。
雖然其他一些元素實現ILayoutController - ListView沒有。
手動設置高度不是一個選項。我想這只是一個不好的實現,然後如果它不像WPF那樣行事......那麼如果我想要它填充空間我會使用一個網格 – Dbl
也如果我用一個標籤替換listview它不會消耗父母的剩餘高度。所以在這種情況下,這只是列表視圖的行爲 – Dbl