2016-05-31 29 views
0

我正在一個頁面上,它需要嵌套的ListViews。我注意到我的佈局被一個StackLayout中的一個ListView扭曲,這消耗了比條目所需的更多空間。我如何使我的ListView消耗Xamarin.Forms所需的小空間

事實證明,即使沒有任何條目,在Xamarin上,ListView佔用的空間比它可能需要的更多。

有誰知道如何擺脫這種行爲?

WPF(這使得精):

wpf rendering

<StackPanel Background="Green"> 
     <Label Content="hi" Background="Aqua"></Label> 
     <ListView Background="Red"></ListView> 
    </StackPanel> 

Xamarin:

xamarin rendering

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沒有。

回答

0

Xamarin.Forms中的StackLayout嘗試填充Parent提供的空間。您可以在here中獲得關於它的更多信息。

因此,在代碼中,你可以嘗試通過使用兩種Horizo​​ntalOptionsVerticalOptions的控制或者ListView控件或StackLayout的高度。

new StackLayout 
{ 
    Children = 
    { 
     new CustomListView() 
     { 
      BackgroundColor = Color.Red, 
      VerticalOptions = LayoutOptions.Start, 
      HeightRequest = 100 // Can be used even in ListView 
     } 
    }, 
    HeightRequest = 100 // Can be used even in StackLayout 
} 

這是輸出設置HeightRequest無論是方式,當我得到。 Output of the above code snippet

+0

手動設置高度不是一個選項。我想這只是一個不好的實現,然後如果它不像WPF那樣行事......那麼如果我想要它填充空間我會使用一個網格 – Dbl

+1

也如果我用一個標籤替換listview它不會消耗父母的剩餘高度。所以在這種情況下,這只是列表視圖的行爲 – Dbl

相關問題