缺少相对布局中的项目

时间:2014-02-26 17:42:13

标签: android xml layout view

我需要在Android XML中的2x3网格中放置六个块。我正在使用的视图位于RelativeLayout内,该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>

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:1)

如果您要使用相对布局,则应指定尽可能多的关系。所以sFatBlock应该低于carbBlock,例如低于右蛋白质块。现在,您只需指定每个块的x或y。

您还应该将视图与父级对齐。所以第一行应该都有alignParentTop为true。并且第一列应该具有alignParentLeft = true。

您可能还想在视图中考虑这些元素的网格视图,因为这将为您完成所有这些对齐。