2015-04-21 156 views
2

我想圍繞android佈局來包裝頭部,並且我認爲我會從一個簡單的例子開始,但由於某種原因它不能正常工作。基於百分比的android佈局

我開始時只是將佈局分成4塊,並使用背景顏色來證明它是按預期工作的。

此代碼爲偉大工程:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:orientation="vertical" 
    android:layout_height="match_parent"> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dip" 
     android:layout_weight="0.25" 
     android:background="@android:color/holo_green_light"> 
    </RelativeLayout> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dip" 
     android:layout_weight="0.25" 
     android:background="@android:color/white"> 
    </RelativeLayout> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dip" 
     android:layout_weight="0.25" 
     android:background="@android:color/holo_orange_light"> 
    </RelativeLayout> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dip" 
     android:layout_weight="0.25" 
     android:background="@android:color/holo_red_light"> 
    </RelativeLayout> 

</LinearLayout> 

所以我想繼續在部分的故障,並在第二屆一個,每個填充50%(有效覆蓋它)添加兩個新的佈局。

我已經嘗試了LinearLayout和RelativeLayout,我無法獲得任何工作。

這裏是我現在所擁有的代碼:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:orientation="vertical" 
    android:layout_height="match_parent"> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dip" 
     android:layout_weight="0.25" 
     android:background="@android:color/holo_green_light"> 
    </RelativeLayout> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dip" 
     android:layout_weight="0.25" 
     android:orientation="horizontal" > 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_weight="0.5" 
      android:background="@android:color/holo_green_dark" 
      android:layout_alignParentLeft="true" > 
     </LinearLayout> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_weight="0.5" 
      android:background="@android:color/holo_blue_dark" 
      android:layout_alignParentRight="true" > 
     </LinearLayout> 

    </RelativeLayout> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dip" 
     android:layout_weight="0.25" 
     android:background="@android:color/holo_orange_light"> 
    </RelativeLayout> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dip" 
     android:layout_weight="0.25" 
     android:background="@android:color/holo_red_light"> 
    </RelativeLayout>Layout> 

</LinearLayout> 

我認爲這個問題是在子LinearLayouts的match_parent,但問題是,如果我用WRAP_CONTENT,沒有內容,使他們消失。

+1

您應該使用'android:weightSum'屬性來實現父級佈局。 –

+2

不鼓勵嵌套的重量佈局。 –

+0

在相對佈局中輸入一些高度,並添加當前佈局的一些屏幕截圖。儘量不要使用嵌套佈局。 – Codelord

回答

5

請檢查更新的xml。它會正常工作

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:orientation="vertical" 
    android:weightSum="1" 
    android:layout_height="match_parent"> 
    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dip" 
     android:layout_weight="0.25" 
     android:background="@android:color/holo_green_light"> 
    </RelativeLayout> 
    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dip" 
     android:layout_weight="0.25" 
     android:weightSum="1" 
     android:orientation="horizontal" > 
     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_weight="0.5" 
      android:background="@android:color/holo_green_dark" 
      android:layout_alignParentLeft="true" > 
     </LinearLayout> 
     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_weight="0.5" 
      android:background="@android:color/holo_blue_dark" 
      android:layout_alignParentRight="true" > 
     </LinearLayout> 
    </LinearLayout> 
    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dip" 
     android:layout_weight="0.25" 
     android:background="@android:color/holo_orange_light"> 
    </RelativeLayout> 
    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dip" 
     android:layout_weight="0.25" 
     android:background="@android:color/holo_red_light"> 
    </RelativeLayout> 
</LinearLayout> 

enter image description here

我已經加入weightsum標籤和改變你的相對佈局的一個線性佈局

+0

Ahhhh,權重現在有意義,我認爲它自動爲Layouts在同一級別上做。非常感謝! – Tennesseej

+0

@Tennesseej如果你認爲我的回答是可以接受的和有幫助的,你可以將其標記爲接受:) – deniz

3

RelativeLayout的意見,不會有任何的重量屬性的效果。您應該嘗試用LinearLayout替換RelativeLayout

+0

這是一個很好的觀點和確切的結果! –