0

xamarin.formsのコンテンツの高さに合わせてリストビューの高さを調整する方法はありますか?私は正常にそれを行うことができますが、アンドロイドのために、私はレイアウトのレンダリングを遅くするソリューションを適用しました。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; 
     } 
    } 
    } 

しかし、これは常に時々下部のスペースを残して、リストビューのための正確な高さを生成しません。また、リストビューが使用されているページのレイアウトを大幅に遅らせます。

誰でもこの手伝いできますか?

答えて

0

xamarin.formsのコンテンツの高さに合わせてリストビューの高さを調整する方法はありますか?

あなたはこの機能を実装するためにHasUnevenRowsプロパティを使用できます。

  • HasUnevenRows - 真/偽の値をtrueに設定した場合、行は様々な高さを持っています。デフォルトはfalseです。

行の高さは、高さが自動的にXamarin.Formsによって計算されますので、手動で、一度HasUnevenRowsがtrueに設定されている設定する必要はありません。

のC#:

RowHeightDemoListView.HasUnevenRows = true; 

XAML:

<ListView x:Name="RowHeightDemoListView" HasUnevenRows="true" /> 
関連する問題