【问题标题】:Android relative layout issueAndroid相对布局问题
【发布时间】:2013-09-21 15:11:58
【问题描述】:

你好,今天我尝试为 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>

提前致谢!

【问题讨论】:

  • 不是答案,更像是建议,不要使用@id/TextView1、@id/1 之类的东西变得讨厌且难以追踪错误
  • @mou 花了足够的时间来命名和理解控件 ID 的名称,并始终遵守约定
  • 这里真的需要滚动视图吗?

标签: java android xml android-relativelayout


【解决方案1】:

你需要使用

  <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"

字符串开头的符号 (@) 表示 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】:

    只是命名约定

    只需将 Buttons @+id/1 的 id 名称更改为 @+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>
    

    【讨论】:

      猜你喜欢
      • 2012-02-17
      • 1970-01-01
      • 2011-03-18
      • 2013-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多