我一直在为此挣扎两天了,仍然无法修复..所以我希望你们能够帮助我!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;
}
}
}
有谁知道我怎么能达到我的目标?
TableView中的行是否为一个不变的高度?根据行高和行数调整表视图的大小可能会更容易。 – dylansturg
不,他们不是..我要去罗伯特的答案,因为这可以帮助我很多:) – Mittchel