我需要在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>
答案 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。
您可能还想在视图中考虑这些元素的网格视图,因为这将为您完成所有这些对齐。