LinerLayoutでは、子要素を任意の大きさ(比率)で、配置することができます。
使用するのは、layout_weightとweightSumです。
まず、注意することは、横に並べる場合、子要素のlayout_widthを0dpに設定する必要があります。
縦に並べる場合は、子要素のlayout_heightを0dpにします。
これを設定しなければ、想定した大きさになってくれません。
layout_weightは、子要素に設定し、その子要素がどの程度の大きさを占めるかを設定します。
weightSumは、LinerLayoutに設定し、layout_weightが指定された場合の全体の大きさを設定します。
例えば、weightSumが100で、子要素のlayout_weightが40の場合、縦または横の60%が空白になります。
weightSumが設定されない場合、子要素のlayout_weightの合計がweightSumとなるように大きさが決められます。
また、layout_weight、weightSumで配分される大きさからは、固定サイズの子要素の大きさは除かれます。
つまり、wrap_contentが設定された子要素があった場合、そのサイズを除いたサイズが、全体のサイズになります。
サンプル
weightSumがないので、layout_width="wrap_content"以外の領域がlayout_weight="1"になります。
サンプル2は、android:weightSum="4"で、android:layout_weight="1"とandroid:layout_weight="2"のボタンがあります。ボタンの大きさは、1:2で、25%のスペースが空いています。
使った、xmlは以下のとおりです。