2015-11-15 77 views
0

我一直在爲此掙扎兩天了,仍然無法修復..所以我希望你們能夠幫助我!Xamarin ListView高度等於ContentSize

我有一個頁面,它有一個WebView和一個ListView。兩個項目都能夠自己滾動,但我不想那樣。我希望頁面可以完全滾動。 這意味着我必須將兩個對象放在ScrollView中,並將.Height設置爲與contentSize相等。

對於WebView來說,它非常容易,因爲它有一個LoadFinished事件,我可以設置高度等於它的內容。

現在我正在編寫ListView,並且對此非常困難。由於我從web服務加載數據異步,因此看起來UITableView的contentize在我的渲染器中始終爲0。

public class RZNoScrollListViewRenderer : ViewRenderer<RZNoScrollTableView, UITableView> 
{ 
private UITableView _tableView; 

    protected override void OnElementChanged (ElementChangedEventArgs<RZNoScrollTableView> e) 
    { 
     base.OnElementChanged (e); 

     if (Control == null) 
      return; 

     _tableView = Control as UITableView; 
     ResizeView(); 
    } 

    public override void LayoutSubviews() 
    { 
     base.LayoutSubviews(); 
     ResizeView(); 
    } 

    private async void ResizeView() 
    { 
     if (_tableView != null) 
     { 
      _tableView.LayoutIfNeeded(); 
      var contenSizeHeight = _tableView.ContentSize.Height; 
      var frame = _tableView.Frame; 
      frame.Height = contenSizeHeight; 

      _tableView.Frame = frame; 

      var listElement = Element as RZNoScrollTableView; 
      var bounds = new Xamarin.Forms.Rectangle (Element.Bounds.X, Element.Bounds.Y, Element.Bounds.Width, frame.Height); 
      await Element.LayoutTo (bounds, listElement.TransitionSpeedMsec, listElement.Easing); 
      Element.HeightRequest = bounds.Height; 
     } 
    } 
} 

有誰知道我怎麼能達到我的目標?

+0

TableView中的行是否爲一個不變的高度?根據行高和行數調整表視圖的大小可能會更容易。 – dylansturg

+0

不,他們不是..我要去羅伯特的答案,因爲這可以幫助我很多:) – Mittchel

回答

2

我會把網頁視圖放在列表視圖標題中。然後,列表視圖內容應該按照應該進行虛擬化。

+0

感謝您的迴應。 您的解決方案不會幫助,因爲我有另一個頂部包含圖像的視圖。 我試着做你說的話(見下圖)。紅色是圖像,下面是帶有WebView作爲標題的ListView。問題是ListView現在是可滾動的,頂部的圖像保持靜態 [見圖](http://s22.postimg.org/9k6in1lr5/Simulator_Screen_Shot_Nov_15_2015_2_25_27_PM.png) – Mittchel

+0

我可以把所有的東西都放在標頭上..也許.. – Mittchel