相对布局错误中的线性布局

时间:2013-05-09 03:02:59

标签: android android-layout

我有相对布局,里面有两个线性布局

程序在没有第一个线性布局的情况下工作。谁能解释为什么?

    <?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="@drawable/bngp" >

    <TextView
        android:id="@+id/Cart"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_marginBottom="5dp"
        android:layout_marginTop="5dp"
        android:gravity="center_horizontal"
        android:paddingTop="10dp"
        android:text="Cart"
        android:textColor="#FFFFFF"
        android:textSize="25sp"
        android:textStyle="bold" />

//这是线性布局导致错误

    <LinearLayout
        android:id="@+id/table"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/Cart"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/Product"
            android:layout_height="wrap_content"
            android:layout_weight="6"
            android:text="Product"
            android:textColor="#000000" />

        <TextView
            android:id="@+id/Quantity"
            android:layout_height="wrap_content"
            android:layout_weight="3"
            android:gravity="center"
            android:text="Quantity"
            android:textColor="#000000" />

        <TextView
            android:id="@+id/Price"
            android:layout_height="wrap_content"
            android:layout_weight="2"
            android:gravity="center"
            android:text="Price"
            android:textColor="#000000" />

        <TextView
            android:id="@+id/Value"
            android:layout_height="wrap_content"
            android:layout_weight="2"
            android:gravity="center"
            android:text="Value"
            android:textColor="#000000" />
    </LinearLayout>

//线性布局结束


    <ListView
        android:id="@android:id/list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_above="@+id/textView1"
        android:layout_below="@id/table" />

    <TextView
        android:id="@id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/linear"
        android:paddingBottom="20dp"
        android:paddingTop="20dp"
        android:text="Total Value: "
        android:textColor="#FFFFFF" />

    <TextView
        android:id="@+id/Final_result"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@id/linear"
        android:layout_toRightOf="@id/textView1"
        android:paddingBottom="20dp"
        android:paddingTop="20dp"
        android:textColor="#FFFFFF" />

    <LinearLayout
        android:id="@id/linear"
        style="@android:style/ButtonBar"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true" >

        <Button
            android:id="@+id/button3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Confirm" />

        <Button
            android:id="@+id/button4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Clear" />
    </LinearLayout>

</RelativeLayout>

2 个答案:

答案 0 :(得分:3)

立即检查您的布局。我编辑过一些行。使用@ + id而不是@id。你必须知道@ id,@ + id和@android:id。

之间的区别

"@android:id" which means you are referencing an item in Android namespace.

"@id" means you have defined ids in your application itself, 

例如: -

=============================================== ============

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <item name="TextView1" type="id"/>
</resources>

在这种情况下,您已在资源中定义了textview ID。现在你可以使用,

<TextView
    android:id="@id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
/>

=============================================== ============

"@+id" means you are created a view (textview , layouts , etc..) in your layout and you wanted to add the id to R.java.

立即检查你的布局,

<?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="@drawable/bngp" >

<TextView
    android:id="@+id/Cart"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_marginBottom="5dp"
    android:layout_marginTop="5dp"
    android:gravity="center_horizontal"
    android:paddingTop="10dp"
    android:text="Cart"
    android:textColor="#FFFFFF"
    android:textSize="25sp"
    android:textStyle="bold" />

<LinearLayout
    android:id="@+id/table"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/Cart"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/Product"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="6"
        android:text="Product"
        android:textColor="#000000" />

    <TextView
        android:id="@+id/Quantity"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="3"
        android:gravity="center"
        android:text="Quantity"
        android:textColor="#000000" />

    <TextView
        android:id="@+id/Price"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="2"
        android:gravity="center"
        android:text="Price"
        android:textColor="#000000" />

    <TextView
        android:id="@+id/Value"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="2"
        android:gravity="center"
        android:text="Value"
        android:textColor="#000000" />
</LinearLayout>

<ListView
    android:id="@+id/list"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_above="@+id/textView1"
    android:layout_below="@+id/table" />

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/linear"
    android:paddingBottom="20dp"
    android:paddingTop="20dp"
    android:text="Total Value: "
    android:textColor="#FFFFFF" />

<TextView
    android:id="@+id/Final_result"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/linear"
    android:layout_toRightOf="@+id/textView1"
    android:paddingBottom="20dp"
    android:paddingTop="20dp"
    android:textColor="#FFFFFF" />

<LinearLayout
    android:id="@+id/linear"
    style="@android:style/ButtonBar"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true" >

    <Button
        android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Confirm" />

    <Button
        android:id="@+id/button4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Clear" />
</LinearLayout>

</RelativeLayout>

答案 1 :(得分:0)

首先,不要使用@ id / blah,而是使用@ + id / blah(即使你没有定义视图)。它没有伤害,并且可以防止一些非常难以追踪错误。

有关详细信息,请提供您收到的错误。