パーツの均等割り付け

Posted by muchag | Android |
初回投稿:2011-04-08 (金) 12:18:54 | 最終更新:2011-04-12 (火) 0:31:41

パーツ幅の設定が

  • 実数値
  • fill_parent
  • wrap_content

なので、ディスプレイサイズから計算しないといけないか
と思っていたが、よい手法を発見した。

要は、各パーツの 幅を同じ にして android:layout_weight を 0 より大きく してあげる。
 

XML 編
  1. <Button android:text="Left"
  2.         android:id="@+id/left"
  3.         android:layout_width="0dp"
  4.         android:layout_height="wrap_content"
  5.         android:layout_weight="1" />
  6. <Button android:text="Middle"
  7.         android:id="@+id/middle"
  8.         android:layout_width="0dp"
  9.         android:layout_height="wrap_content"
  10.         android:layout_weight="1" />
  11. <Button android:text="Right"
  12.         android:id="@+id/right"
  13.         android:layout_width="0dp"
  14.         android:layout_height="wrap_content"
  15.         android:layout_weight="1" />

 

スクリプト編
  1. private final int WC = ViewGroup.LayoutParams.WRAP_CONTENT;
  2.  
  3. /* 省略 */
  4.  
  5. //Button を乗せるレイアウト
  6. LinearLayout layout = new LinearLayout(this);
  7.  
  8. //Button のインスタンスを3つ生成してレイアウトに乗せる
  9. Button left = new Button();
  10. layout.addView(left, new LinearLayout.LayoutParams(0, WC, 1);
  11. Button middle = new Button();
  12. layout.addView(middle, new LinearLayout.LayoutParams(0, WC, 1);
  13. Button right = new Button();
  14. layout.addView(right, new LinearLayout.LayoutParams(0, WC, 1);

Public Constructors

public LinearLayout.LayoutParams (int width, int height, float weight)

Android Developers:LinearLayout.LayoutParams Public Constructors

というわけで、LinearLayout.LayoutParams コンストラクタの
第1引数を 0 (別の値でも良いが同じ値に)、
第3引数が weigth なので 1 以上に設定すればOK。

その他、TableLayout.LayoutParams と TableRow.LayoutParams でも
weight を設定できることを確認した。
 
<参考サイト>
androidプログラミング・アプリ開発日誌~xperia:Button,TextViewなどのViewの幅を均等にレイアウトする~android プログラミング
↑ スクリプトで実現するサンプルも載っている

Fukurooow Android Blog:レイアウト[layout_weight]を使ってボタンを均等配置
↑ android:layout_width を fill_parent とした場合のサンプル画像が載っている

Posted by muchag | Android |
初回投稿:2011-04-08 (金) 12:18:54 | 最終更新:2011-04-12 (火) 0:31:41

コメントはまだありません »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment