代码之家  ›  专栏  ›  技术社区  ›  Arnaud Aliès

Android相对布局问题

  •  0
  • Arnaud Aliès  · 技术社区  · 12 年前

    你好,今天我试图为android做一个相对布局,但我在R.java中遇到了错误: “声明意外结束”8次 我花了一个小时,还是什么也没找到

    这是代码(我确信这是关于xml而不是java代码)

    <?xml version="1.0" encoding="utf-8"?>
    <ScrollView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_height="fill_parent"
        android:layout_width="fill_parent"
        android:id="@+id/playScrollView1">
    
        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:paddingLeft="20dp"
            android:paddingRight="20dp"
            android:id="@+id/playRelativeLayout1">
    
            <TextView
                android:layout_height="wrap_content"
                android:text="Convert to binary"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:layout_width="fill_parent"
                android:id="@+id/TextView1"
                android:layout_alignParentTop="true"/>
    
            <Button
                android:layout_height="wrap_content"
                android:text="0"
                android:layout_width="wrap_content"
                android:layout_below="@id/TextView1"
                android:id="@+id/1"/>
    
            <Button
                android:layout_height="wrap_content"
                android:text="0"
                android:layout_width="wrap_content"
                android:id="@+id/2"
                android:layout_below="@id/1"/>
    
        </RelativeLayout>
    </ScrollView>
    

    提前谢谢!

    2 回复  |  直到 12 年前
        1
  •  3
  •   Raghunandan    12 年前

    你需要使用

      <Button
            android:layout_height="wrap_content"
            android:text="0"
            android:layout_width="wrap_content"
            android:layout_below="@+id/TextView1" // missing+
            android:id="@+id/button1"/> // change id to button1 not 1
    

    其他按钮相同

    http://developer.android.com/guide/topics/ui/declaring-layout.html

    任何View对象都可以有一个与其关联的整数ID,以唯一标识树中的View。编译应用程序时,此ID被引用为整数,但该ID通常在布局XML文件中的ID属性中以字符串的形式分配。

    例子:

    android:id="@+id/my_button"
    

    字符串开头的at符号(@)表示XML解析器应该解析和扩展ID字符串的其余部分,并将其标识为ID资源。加号(+)表示这是一个新的资源名称,必须创建并添加到我们的资源中(在R.java文件中)

    对于相对布局

    http://developer.android.com/guide/topics/ui/layout/relative.html

    <?xml version="1.0" encoding="utf-8"?>
    <ScrollView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        android:id="@+id/playScrollView1">
    
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingLeft="20dp"
            android:paddingRight="20dp"
            android:id="@+id/playRelativeLayout1">
    
            <TextView
                android:layout_height="wrap_content"
                android:text="Convert to binary"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:layout_width="fill_parent"
                android:id="@+id/TextView1"
                android:layout_alignParentTop="true"/>
    
            <Button
                android:layout_height="wrap_content"
                android:text="0"
                android:layout_width="wrap_content"
                android:layout_below="@+id/TextView1"
                android:id="@+id/button1"/>
    
            <Button
                android:layout_height="wrap_content"
                android:text="0"
                android:layout_width="wrap_content"
                android:id="@+id/2"
                android:layout_below="@+id/button1"/>
    
        </RelativeLayout>
    </ScrollView>
    
        2
  •  1
  •   Trikaldarshiii    12 年前

    它只是命名约定

    只需更改Buttons的id名称 @+id/1 @+id/One

    不应该 仅限数字 不得启动 具有 数字 因为它将在R.java中生成Field

    像下面这样

        public static final int 1=0x7f0a0032;
        public static final int 2=0x7f0a0033;
    

    按照惯例,这是一个错误——一个大错误

    所以你的代码应该是这样的

            <Button
                android:id="@+id/One"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/TextView1"
                android:text="0" />
    
            <Button
                android:id="@+id/Two"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/One"
                android:text="0" />
    

    或完全

    <?xml version="1.0" encoding="utf-8"?>
    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/playScrollView1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
    
        <RelativeLayout
            android:id="@+id/playRelativeLayout1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:paddingLeft="20dp"
            android:paddingRight="20dp" >
    
            <TextView
                android:id="@+id/TextView1"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:text="Convert to binary"
                android:textAppearance="?android:attr/textAppearanceMedium" />
    
            <Button
                android:id="@+id/One"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/TextView1"
                android:text="0" />
    
            <Button
                android:id="@+id/Two"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/One"
                android:text="0" />
        </RelativeLayout>
    
    </ScrollView>