2014-10-05 61 views
0

我有一個ListView。我注意到,如果我像下面那樣設置LayoutParams,那麼ListView會抓取每個單元很多次,這會讓事情變得緩慢。 [代碼是C#,因爲這是通過單聲道:]不使用LayoutParams.MatchParent優化ListView

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

看來,下面做的:

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

這是很奇怪的。我不知道爲什麼Android會以不同的方式處理這兩種情況。但它確實解決了這個問題。