2013-10-03 3 views
24

Я хочу добавить три линейных макета в программу программно с каждой одинаковой шириной. проблема в том, что я не могу установить вес этих макетов программным путем. Я мог бы сделать это в xml, но я хочу сделать это в программе. вот что я хочу: enter image description hereЛинейный макет Android Linear Layout Weight Programmatically

ответ

38

Вот его решение

LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(0, 100); 
    lp.weight = 1; 

См Полного решению

LinearLayout ll1, ll2, ll3; 
    /* Find these LinearLayout by ID 
    i.e ll1=(LinearLayout)findViewById(R.id.ll1); 
    */ 

    LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(0, 100); 
    lp.weight = 1; 
    ll1.setLayoutParams(lp); 
    ll2.setLayoutParams(lp); 
    ll3.setLayoutParams(lp); 
+1

Работал как очарование, спасибо за быстрый ответ. Однако мне пришлось немного изменить это >> LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams (0, LayoutParams.WRAP_CONTENT); \t \t \t \t lp.weight = 1; – Bhaijaan

5

Использование new LinearLayout.LayoutParams(int width, int height, float weight) для установки весов при установке макета Params к подобозрению

2

Сделайте это так.

protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    txtNote = (LinedEditText) findViewById(R.id.txtNote); 
    lnr = (LinearLayout) findViewById(R.id.lnr); 
    LinearLayout l1 = new LinearLayout(this); 
    LinearLayout l2 = new LinearLayout(this); 
    LinearLayout l3 = new LinearLayout(this); 
    l1.setBackgroundResource(android.R.color.holo_green_light); 
    l2.setBackgroundResource(android.R.color.holo_orange_dark); 
    l3.setBackgroundResource(android.R.color.holo_blue_bright); 

    LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(0,LinearLayout.LayoutParams.MATCH_PARENT, 1); 
    lnr.addView(l1, param); 
    lnr.addView(l2, param); 
    lnr.addView(l3, param); 

} 
2

Вы можете сделать это, установив макет веса свойства для отдельных линейных компоновок, передать его в LinearLayout - LayoutParams конструктор:

LinearLayout.LayoutParams param = new LinearLayout.LayoutParam(
         LayoutParams.MATCH_PARENT, 
         LayoutParams.MATCH_PARENT, 1); 

или

LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(
         0, 
         LayoutParams.MATCH_PARENT, 1); 

Надеется, что это может помочь вам!