Layout の view の weight 設定

今日も、レイアウトシリーズで扱わなかった、他の機能を見てみます。

view の配置方法については、各レイアウトで提供されている addView で追加してきま
した。しかし、実際に配置してみると、なかなか上手くレイアウトができなかったりし
ます。

良く使うパターンとしては「view を均等に配置する」というものではないでしょうか。
weight を使って view の均等配置を試してみたいと思います。
以下、サンプルです。

public class HellowWorldActivity extends Activity {
    private final int MP = TableLayout.LayoutParams.MATCH_PARENT; 
    private final int WC = TableLayout.LayoutParams.WRAP_CONTENT; 
    
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        LinearLayout linearLayout = new LinearLayout(this);
        setContentView(linearLayout);

        TextView h11 = new TextView(this);
        h11.setText("h11");
        h11.setBackgroundColor(Color.RED);
        LinearLayout.LayoutParams param1 = new LinearLayout.LayoutParams(WC,WC);
        param1.weight = 1.0f;
        linearLayout.addView(h11, param1);

        TextView h12 = new TextView(this);
        h12.setText("h12");
        h12.setBackgroundColor(Color.GREEN);
        LinearLayout.LayoutParams param2 = new LinearLayout.LayoutParams(WC,WC);
        param2.weight = 1.0f;
        linearLayout.addView(h12,param2);
    }
}

param1.weight, param2.weight に 1.0 を指定してます。
ウェイトを設定すると view の大きさに関係なく、指定した比率で配置してくれます。
1.0 と 1.0 なので、1 対 1 の大きさの割合で配置してくれます。

ウェイトを 1.0 と 2.0 に変更すると 1 対 2 の大きさの割合になります。
複数の view の大きさと座標を均等に指定したい場合は、全ての view に 1.0f を指定
しておけばいいみたいです。ちなみにウェイトを設定すると view に setWidth で幅を
直接指定しても、ウェイトの設定が優先されるみたいです。