2015-11-15 82 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