【发布时间】: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