web-dev-qa-db-ja.com

相対レイアウトの幅を画面の幅の1/3に設定しますか?

以下のようなレイアウトになっています。ここで、相対レイアウトの幅を固定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>
14
Kelvin Tan

使用する 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>
25
Carlos Robles

ビューの幅を親ビューの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の比率です。 ドキュメント はかなり良いです。

2
Estel

LinearLayoutAndroid: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>
1
Chris Horner