【问题标题】:Xamarin ListView Height equal to ContentSizeXamarin ListView 高度等于 ContentSize
【发布时间】:2015-11-15 21:06:20
【问题描述】:

我已经为此苦苦挣扎了两天,但似乎仍然无法解决..所以我希望你们能够帮助我!

我有一个包含 WebView 和 ListView 的页面。这两个项目都可以自己滚动,但我不希望这样。我希望页面完全可滚动。 这意味着我必须将两个对象都放在 ScrollView 中并将 .Height 设置为等于它的 contentSize。

对于 WebView 这很简单,因为它有一个 LoadFinished 事件,我可以将高度设置为等于它的内容。

现在我正在编写 ListView,但我确实遇到了麻烦。由于我从 web 服务异步加载数据,因此 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;
        }
    }
}

有人知道我怎样才能达到我的目标吗?

【问题讨论】:

  • TableView 中的行高度是恒定的吗?根据行高和行数调整表格视图的大小可能更容易。
  • 不,他们不是。我要罗伯特的答案,因为这对我有很大帮助:)

标签: listview xamarin xamarin.ios xamarin.forms


【解决方案1】:

我会将 web 视图放在 listviews 标题中。然后列表视图内容应该虚拟化。

【讨论】:

  • 感谢您的回复。您的解决方案无济于事,因为我在顶部有另一个包含图像的视图。我试着按照你说的去做(见下图)。红色是图像,下面是带有 WebView 作为标题的 ListView。问题是 ListView 现在可以滚动并且顶部的图像保持静态See image
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-08
  • 2020-08-31
  • 1970-01-01
相关资源
最近更新 更多