Android 不使用LayoutParams.MatchParent优化ListView

Android 不使用LayoutParams.MatchParent优化ListView,android,listview,android-listview,mono,layoutparams,Android,Listview,Android Listview,Mono,Layoutparams,我有一个列表视图。我注意到,如果我像下面那样设置LayoutParams,ListView会多次获取每个单元格,这会使事情变得缓慢。[代码是C,因为这是通过Mono:] var layoutParams = new RelativeLayout.LayoutParams (someWidth, someHeight); layoutParams.LeftMargin = someLeftMargin; layoutParams.TopMargin = someTopMargin;

我有一个列表视图。我注意到,如果我像下面那样设置LayoutParams,ListView会多次获取每个单元格,这会使事情变得缓慢。[代码是C,因为这是通过Mono:]

  var layoutParams = new RelativeLayout.LayoutParams (someWidth, someHeight);
  layoutParams.LeftMargin = someLeftMargin;
  layoutParams.TopMargin = someTopMargin;
  this.LayoutParameters = layoutParams;
我可以通过执行以下操作来消除这种缓慢:

  RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MatchParent, RelativeLayout.LayoutParams.MatchParent);
  this.LayoutParameters = layoutParams;
但这迫使我在层次结构中添加一个附加层,除非我真的想匹配父级的大小。如果可能的话,我想避免这种情况


我在想,我是否可能两全其美?是否可以设置LayoutParams,将ListView放置在其父级中的任意位置,而不必让该对象多次获取每个单元格,从而降低性能。

似乎是以下操作:

  RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MatchParent, RelativeLayout.LayoutParams.MatchParent);
  layoutParams.SetMargins(leftMargin, topMargin, rightMargin, bottomMargin); // four ints
  this.LayoutParameters = layoutParams;
这很奇怪。我不知道为什么Android会以不同的方式处理这两种情况。但它确实解决了问题