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 で幅を
直接指定しても、ウェイトの設定が優先されるみたいです。