LinearLayout.LayoutParams.layout_weight

layout_weightを使うと、ViewまたはViewGroup同士のレイアウトを比率で分けることができる・・・。

LinearLayout.LayoutParams | Android Developers

activity_main.xmlで、

LinearLayoutのlayout_widthをmatch_parentにして、まずはButtonにlayout_weightを付けずにwrap_contentで3つ並べる・・・。

今度はすべてのButtonにlayout_weightの1を付けて、1:1:1でButtonのレイアウトを割り振る・・。
(layout_weightを付けたButtonのlayout_widthは0dpにする・・・。
その理由については、
layout_weightについて(0dipとfill_parentの違いについて) - Master of None
などを参照のこと・・・。
要は比率とは別に幅を主張してしまうと、レイアウトが崩れてしまうので、比率だけ有効にするということ・・・。)

今度は2:1で割り振る・・・。

両端をlayout_weightの1にして、真ん中のlayout_widthをwrap_contentにする・・・。
こうすると、真ん中がButtonを表示できる最低限のサイズ、両端のButtonはそれを埋めるようなサイズで配置される・・・。

真ん中だけlayout_weightを1にすると、両端がwrap_contentなので表示できる最低限のサイズ、真ん中はそれを埋める形で配置される・・・。

f:id:BG1:20161231072821p:plain

このように比率でButtonのレイアウトを分けることができた・・・。

Sample/android/LinearLayout.LayoutParams/layout_weight/src/LinearLayout.LayoutParams at master · bg1bgst333/Sample · GitHub