0

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?

Antwort

0

Gibt es eine Möglichkeit, die Höhe von listview ab der Höhe des Inhalts in xamarin.forms anzupassen?

Sie könnten HasUnevenRows Eigenschaft verwenden diese Funktion zu implementieren:

  • HasUnevenRows - Wahr/Falsch-Wert, Zeilen haben unterschiedliche Höhen einstellen, wenn auf true gesetzt. Der Standardwert ist false.

Zeilenhöhen müssen nicht einmal manuell eingestellt werden HasUnevenRows auf true gesetzt wurde, weil die Höhen automatisch durch Xamarin.Forms berechnet wird.

C#:

RowHeightDemoListView.HasUnevenRows = true; 

XAML:

<ListView x:Name="RowHeightDemoListView" HasUnevenRows="true" /> 
Verwandte Themen