2011-09-04 83 views
12

我已經得到了我想要動態重量發出的偏愛兩個按鈕。他們開始了每一個重量爲0.5(這當然增加了LinearLayout中的權重爲1),但如果偏好是真的,那麼我想分別改變它們的權重,以1.7和0.3。我可以設置XML的重量,但我似乎無法找到如何以編程方式改變它。設定重量(百分比)編程


解決方案

LinearLayout.LayoutParams PO = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT, .60f); 
LinearLayout.LayoutParams MO = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT, .20f); 
+0

檢查我的答案上http://stackoverflow.com/questions/4641072/how-to-set-layout-weight-attribute-dynamically-from-code#answer-13943330 – gantzer89

回答

9

查找到LayoutParams,它有一個字段設置權重

+4

燁,我結束了: 'LinearLayout.LayoutParams PO =新LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT,.60f); \t \t LinearLayout.LayoutParams MO = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT,.20f);' – ecirish

+2

@ecirish我將您的解決方案添加到問題的尾部,以獲得更好的可視性 –

2

使用此回收LayoutParam對象:

((LinearLayout.LayoutParams) view.getLayoutParams()).weight = 0.2f; 
view.refreshDrawableState(); // This is to explicit force the refresh. 
2

如果寬度的構造函數,高度和重量不起作用,請嘗試使用寬度和高度的構造函數。然後手動設置重量。

如果你想寬度按體重,設置寬度爲構造0來設置。同樣適用於身高。 下面的代碼爲我工作。

LinearLayout.LayoutParams childParam1 = new LinearLayout.LayoutParams(0,LinearLayout.LayoutParams.MATCH_PARENT); 
childParam1.weight = 0.3f; 
child1.setLayoutParams(childParam1); 

LinearLayout.LayoutParams childParam2 = new LinearLayout.LayoutParams(0,LinearLayout.LayoutParams.MATCH_PARENT); 
childParam1.weight = 0.7f; 
child2.setLayoutParams(childParam2); 

parent.setWeightSum(1f); 
parent.addView(child1); 
parent.addView(child2);