我已经为这件事挣扎了两天了,似乎还是没能把它修好。所以我希望你们能帮我!
我有一个有WebView和ListView的页面。这两个项目都可以自己滚动,但我不想那样。我希望页面完全可滚动。这意味着我必须将两个对象放置在ScrollView中,并将.Height设置为等于它的contentSize。
对于WebView来说,它非常容易,因为它有一个LoadFinished事件,所以我能够设置与它的内容相等的高度。
现在我正在编写ListView,我在这方面有很大的困难。由于我是从webservice加载数据异步的,所以UITableView的内容大小似乎总是在呈现器中为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;
}
}
}有人知道我怎样才能达到我的目标吗?
发布于 2015-11-15 13:06:20
我会把网页视图放在列表视图的标题中。然后,listview内容应该像它应该的那样虚拟化。
https://stackoverflow.com/questions/33719871
复制相似问题