Gibt es eine Möglichkeit, wie ich die Höhe von listview in xamarin.forms anpassen kann? Ich konnte es erfolgreich für iOS tun, aber für Android, ich habe eine Lösung angewendet, die zu langsamen Layout-Rendering führt.Nicht scrollbare Listenansicht in xamarin.forms
code
public class CustomListViewRenderer : ListViewRenderer
{
...
protected async override void OnMeasure(int widthMeasureSpec, int heightMeasureSpec)
{
base.OnMeasure(widthMeasureSpec, heightMeasureSpec);
if(Element == null || ((CustomListView)Element).IsScrollable)
{
return;
}
var view = (CustomListView)Element;
if(!view.IsScrollable)
{
var mAdapter = nativeList.Adapter;
int totalHeight = 0;
int listWidth = nativeList.MeasuredWidth;
int listHeight = nativeList.MeasuredHeight;
if(totalCount == nativeList.Count)
{
//return;
}
for (int i = 0; i < mAdapter.Count; i++)
{
global::Android.Views.View mView = mAdapter.GetView(i, null, nativeList);
mView.Measure(MeasureSpec.MakeMeasureSpec(listWidth, MeasureSpecMode.Exactly),
MeasureSpec.MakeMeasureSpec(0, MeasureSpecMode.Unspecified));
totalHeight += (int)(mView.MeasuredHeight/Resources.DisplayMetrics.Density);
totalCount = i + 1;
}
ViewGroup.LayoutParams param = nativeList.LayoutParameters;
param.Height = totalHeight
+ (nativeList.DividerHeight * (mAdapter.Count - 1));
view.HeightRequest = param.Height;
}
}
}
jedoch nicht immer Dies gilt für Listenansicht genaue Höhe erzeugen, manchmal Platz am Ende verlassen. Darüber hinaus erzeugt es eine große Verzögerung beim Auslegen der Seite, auf der die Listenansicht verwendet wurde.
Kann mir bitte jemand dabei helfen?