2014-02-26 104 views
1

我需要將六個塊放置在Android XML中的2x3網格中。我使用的視圖是在另一個RelativeLayout內部的RelativeLayout中。下面我的代碼中顯示的六個視圖不會產生任何錯誤,但只有四個顯示出來(左下兩個缺失)。我認爲這可能與我使用layout_below和layout_toRightOf的方式有關,但我無法弄清楚究竟發生了什麼問題。這是我的代碼,問題是在xml結尾的六個視圖。缺少相對佈局中的項目

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="#000000" > 

<!--/////////////Borders///////////////--> 

<View 
    android:id="@+id/topBorder" 
    android:layout_width="match_parent" 
    android:layout_height="15dp" 
    android:background="#01FF70" 
    android:layout_alignParentTop="true" 
    android:visibility="invisible" /> 

<View 
    android:id="@+id/bottomBorder" 
    android:layout_width="match_parent" 
    android:layout_height="15dp" 
    android:background="#FFDC00" 
    android:layout_alignParentBottom="true" 
    android:visibility="invisible" /> 

<View 
    android:id="@+id/leftBorder" 
    android:layout_width="15dp" 
    android:layout_height="match_parent" 
    android:background="#FF851B" 
    android:layout_alignParentLeft="true" /> 

<View 
    android:id="@+id/rightBorder" 
    android:layout_width="15dp" 
    android:layout_height="match_parent" 
    android:background="#85144B" 
    android:layout_alignParentRight="true"/> 


<!--/////////////Left Panel///////////////--> 

<LinearLayout 
    android:id="@+id/leftPanel" 
    android:layout_below="@+id/topBorder" 
    android:layout_toRightOf="@+id/leftBorder" 
    android:layout_width="140dp" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <ImageView 
     android:id="@+id/icon" 
     android:layout_width="115dp" 
     android:layout_height="115dp" 
     android:layout_alignParentLeft="true" 
     android:src="@drawable/spongebob" /> 

    <TextView 
     android:id="@+id/txt_name" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:minLines="3" 
     android:maxLines="3" 
     android:text="Insert text here insert text here insert text here insert text" 
     android:textSize="18sp" /> 

    <TextView 
     android:id="@+id/txt_size" 
     android:layout_marginTop="-7dp" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:minLines="1" 
     android:maxLines="1" 
     android:text="$3.00" 
     android:textSize="30sp" /> 

</LinearLayout> 

<View 
    android:id="@+id/divider" 
    android:layout_toRightOf="@id/leftPanel" 
    android:background="#FFFFFF" 
    android:layout_width="1dp" 
    android:layout_height="185dp" 
    android:layout_marginTop= "30dp" /> 


<!--/////////////Right Panel////////////// --> 

<RelativeLayout 
    android:id="@+id/rightContainer" 
    android:layout_toRightOf="@+id/divider" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <View 
     android:id="@+id/calorieBlock" 
     android:layout_width="10dp" 
     android:layout_height="65dp" 
     android:layout_marginLeft="25dp" 
     android:layout_marginTop="15dp" 
     android:background="#ffffff" /> 

    <View 
     android:id="@+id/carbBlock" 
     android:layout_width="10dp" 
     android:layout_height="65dp" 
     android:layout_toRightOf="@+id/calorieBlock" 
     android:layout_marginLeft="25dp" 
     android:layout_marginTop="15dp" 
     android:background="#ffffff" /> 

    <View 
     android:id="@+id/tfatBlock" 
     android:layout_width="10dp" 
     android:layout_height="65dp" 
     android:layout_toRightOf="@+id/carbBlock" 
     android:layout_marginLeft="25dp" 
     android:layout_marginTop="15dp" 
     android:background="#ffffff" /> 

    <View 
     android:id="@+id/proteinBlock" 
     android:layout_width="10dp" 
     android:layout_height="65dp" 
     android:layout_below="@+id/calorieBlock" 
     android:layout_marginLeft="25dp" 
     android:layout_marginTop="15dp" 
     android:background="#ffffff" /> 

    <View 
     android:id="@+id/sfatBlock" 
     android:layout_width="10dp" 
     android:layout_height="65dp" 
     android:layout_toRightOf="@+id/proteinBlock" 
     android:layout_marginLeft="25dp" 
     android:layout_marginTop="15dp" 
     android:background="#ffffff" /> 

    <View 
     android:id="@+id/sugarBlock" 
     android:layout_width="10dp" 
     android:layout_height="65dp" 
     android:layout_below="@+id/tfatBlock" 
     android:layout_marginLeft="25dp" 
     android:layout_marginTop="15dp" 
     android:background="#ffffff" /> 

</RelativeLayout> 
</RelativeLayout> 
+0

請發佈您的完整xml代碼 –

+0

我剛剛編輯它以包含完整的xml代碼。 – Tim

回答

1

退房這段代碼

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/rightContainer" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="horizontal" > 

<View 
    android:id="@+id/calorieBlock" 
    android:layout_width="10dp" 
    android:layout_height="65dp" 
    android:layout_marginLeft="25dp" 
    android:layout_marginTop="15dp" 
    android:background="#000000" /> 

<View 
    android:id="@+id/carbBlock" 
    android:layout_width="10dp" 
    android:layout_height="65dp" 
    android:layout_marginLeft="25dp" 
    android:layout_marginTop="15dp" 
    android:layout_toRightOf="@id/calorieBlock" 
    android:background="#000000" /> 

<View 
    android:id="@+id/tfatBlock" 
    android:layout_width="10dp" 
    android:layout_height="65dp" 
    android:layout_marginLeft="25dp" 
    android:layout_marginTop="15dp" 
    android:layout_toRightOf="@id/carbBlock" 
    android:background="#000000" /> 

<View 
    android:id="@+id/proteinBlock" 
    android:layout_width="10dp" 
    android:layout_height="65dp" 
    android:layout_below="@id/calorieBlock" 
    android:layout_marginLeft="25dp" 
    android:layout_marginTop="15dp" 
    android:background="#000000" /> 

<View 
    android:id="@+id/sfatBlock" 
    android:layout_width="10dp" 
    android:layout_height="65dp" 
    android:layout_below="@id/carbBlock" 
    android:layout_marginLeft="25dp" 
    android:layout_marginTop="15dp" 
    android:layout_toRightOf="@id/proteinBlock" 
    android:background="#000000" /> 

<View 
    android:id="@+id/sugarBlock" 
    android:layout_width="10dp" 
    android:layout_height="65dp" 
    android:layout_below="@id/tfatBlock" 
    android:layout_marginLeft="25dp" 
    android:layout_marginTop="15dp" 
    android:layout_toRightOf="@id/sfatBlock" 
    android:background="#000000" /> 

</RelativeLayout> 
+0

完全做到了,謝謝!你知道爲什麼有必要爲每個元素都做「下面」和「toRightOf」嗎? – Tim

+0

本給出了答案 –

1

如果你要使用相對佈局應指定儘可能多的關係。所以sFatBlock應該低於carbBlock,例如右邊的蛋白質塊。現在你只是指定每個塊的x或y。

您還應該將您的意見與家長保持一致。所以第一行應該都是alignParentTop true。第一列應該有alignParentLeft = true。

您可能還想在視圖中考慮這些元素的網格視圖,因爲這將爲您完成所有這些對齊工作。

+0

非常感謝提示,非常有幫助! – Tim