web-dev-qa-db-ja.com

Androidプログラムによる線形レイアウトの重み

それぞれ同じ幅の3つの線形レイアウトをプログラムでアクティビティに追加したい。問題は、これらのレイアウトの重みをプログラムで設定できないことです。私はxml内でこれを行うことができますが、プログラムでこれを行いたいです。ここに私が欲しいものがあります: enter image description here

25

ここでその解決策

    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);
44
Tofeeq Ahmad

new LinearLayout.LayoutParams(int width, int height, float weight)を使用して、レイアウトパラメーターをサブビューに設定するときに重みを設定します

6
Ivo Beckers

このようにします。

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);

}
3
Brijesh Patel

個々の線形レイアウトのレイアウトウェイトプロパティを設定して、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);

それがあなたを助けるかもしれないことを願っています!

2
AndyN