我有一个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,而不需要多次获取每个单元格,从而破坏性能。
答案 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会以不同的方式处理这两种情况。但它确实解决了这个问题。