在不使用LayoutParams.Match_Parent的情况下优化ListView

时间:2014-10-05 14:26:36

标签: android listview android-listview mono layoutparams

我有一个ListView。我注意到如果我像下面那样设置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;

但这迫使我在层次结构中添加一个额外的图层,除非我确实想要匹配父的大小。如果可能的话,我想避免这种情况。

我想知道我是否有可能拥有两全其美的优势?是否可以设置将ListView放在其父级中的任意位置的LayoutParams,而不需要多次获取每个单元格,从而破坏性能。

1 个答案:

答案 0 :(得分:0)

以下情况似乎如下:

  RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MatchParent, RelativeLayout.LayoutParams.MatchParent);
  layoutParams.SetMargins(leftMargin, topMargin, rightMargin, bottomMargin); // four ints
  this.LayoutParameters = layoutParams;

这很奇怪。我不知道为什么Android会以不同的方式处理这两种情况。但它确实解决了这个问题。