2014-01-20 158 views
11

我有一個像下面的佈局。現在,我不想將相對佈局的寬度設置爲240 dp。我想將相對佈局的寬度設置爲屏幕寬度的1/3。有沒有可能在XML文件中做到這一點。如果不可能,我怎樣才能實現使用java代碼?將relativelayout的寬度設置爲屏幕寬度的1/3?

<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> 

回答

20

在父母中使用weightsum="3",在孩子中使用layout_weight=1Take a look a this reference

<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> 
+0

如果LinearLayout只有一個是相關佈局的子元素,該怎麼辦?我只能在相關佈局中設置layout_weight = 1嗎? –

+0

你可以試試,你會自學! :-) 不管怎麼說,請記住,你可以隨時使用這個目的的虛擬視圖,像'<查看 的android:layout_width = 「0dp」 機器人:layout_height = 「match_parent」 機器人:layout_weight = 「2」> '只會顯示額外的空間 –

2

你必須使用一個LinearLayout得到一個視圖的寬度是其parentview的三分之一。

是這樣的:

<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的比率。 documentation是相當不錯的。

1

一個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> 
相關問題