以下のようなレイアウトになっています。ここで、相対レイアウトの幅を固定240dpに設定したくありません。相対レイアウトの幅を画面幅の1/3に設定したい。 xmlファイルでそれを行うことは可能ですか?それが不可能な場合、Javaコードを使用してそれを達成するにはどうすればよいですか?
<FrameLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:id="@+id/fullscreen"
style="@style/translucent">
<RelativeLayout
Android:layout_width="240dp"
Android:layout_height="fill_parent"
Android:layout_gravity="right"
Android:gravity="center"
Android:background="#88000000"
Android:id="@+id/sidebar">
</RelativeLayout>
</FrameLayout>
使用する weightsum="3"
親とlayout_weight=1
子で。 このリファレンスを見てください
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:id="@+id/fullscreen"
style="@style/translucent"
Android:orientation="horizontal"
Android:weightSum="3">
<RelativeLayout
Android:layout_width="0dp"
Android:layout_height="fill_parent"
Android:layout_gravity="right"
Android:gravity="center"
Android:background="#88000000"
Android:id="@+id/sidebar"
Android:layout_weight="1"
>
</RelativeLayout>
<!-- other views, with a total layout_weight of 2 -->
</LinearLayout>
ビューの幅を親ビューの3分の1にするには、LinearLayout
を使用する必要があります。
何かのようなもの:
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<RelativeLayout
Android:layout_width="0dp"
Android:layout_height="match_parent"
Android:layout_weight="1"
Android:gravity="center"
Android:background="#88000000">
</RelativeLayout>
<ViewGroup
Android:layout_width="0dp"
Android:layout_height="match_parent"
Android:layout_weight="2">
</ViewGroup>
</LinearLayout>
重要なビットは、layout_weightsの比率です。 ドキュメント はかなり良いです。
LinearLayout
とAndroid:layout_orientation="horizontal"
は、重みとともに必要なものです。
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="horizontal">
<RelativeLayout
Android:layout_width="0dp"
Android:layout_height="match_parent"
Android:layout_weight="1"
...all your stuff... />
<View
Android:layout_width="0dp"
Android:layout_height="match_parent"
Android:layout_weight="2" />
</LinearLayout>