こんにちは。YOSHITAKA(@YOSHITA19704216)です。
- layout_weightで全体の割合を指定する方法と「weightSum 属性」の使い方がわかります。
Contents
layout_weightで全体の割合を指定する方法「weightSum 属性」
対象者
- kotlinの画面レイアウトで比率で配分する方法がわからない方向けに書いています。
View の幅を1対1に設定
View の幅を1対1になるように指定します。
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<View
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_weight="0.5"
android:background="#ff0000"/>
<View
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_weight="0.5"
android:background="#00ff00"/>
</LinearLayout>
ここでは layout_width は 0dp としています。
ポイントは layout_weight の方です。
layout_weight は両方とも、0.5 に指定しています。
これによって、比率は1 対 1になります。
( 50% ずつになるようにしています。)
- 0.5 + 0.5 = 1 のように、全体が 1 になるように 0.5 を指定しましたが、 これは次のように 1 と 1 にしても同様です。この場合は重み付けの総和 (1 + 1 = 2) に対する割合が計算されます。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> <View android:layout_width="0dp" android:layout_height="50dp" android:layout_weight="1" android:background="#ff0000"/> <View android:layout_width="0dp" android:layout_height="50dp" android:layout_weight="1" android:background="#00ff00"/> </LinearLayout>
重み付けの総和が 2 であるうち、それぞれの View の重みが 1 を占めるという考え方です。
重み付けの総和は weightSum 属性
weightSum を明示的に渡すと、それに対する割合となります。
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:weightSum="3">
<View
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_weight="1"
android:background="#ff0000"/>
<View
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_weight="1"
android:background="#00ff00"/>
</LinearLayout>
とすると、上記の結果は次のようになります。
- weightSum が明示的に指定されない場合は、重みの総和が自動的に計算されます。指定した場合は、重みの総和と weightSum があっていなくても、 (重み)/(重みの総和) がレイアウトに利用されます。
まとめ
今回はKotlinのlayout_weightで全体の割合を指定する方法と「weightSum 属性」で全体の比率の重み付けを変更して画面レイアウトを調整する方法についてお伝えしました。
※プログラミングは習得中ですので、参考程度に記事を読んでください。
参考はこちら