Android:XML无法通过id查找其他视图

时间:2013-04-20 23:01:54

标签: xml resources find relativelayout

突然间,我的RelativeLayout开始出现问题。问题是它不想识别使用ID定义的此RelativeLayout中的其他视图: 错误消息(在线 android:layout_alignBaseline =“@ id / editText3”)是:错误:找不到与给定名称匹配的资源(在'layout_alignBaseline'处,值为'@id / editText3' )。

 <RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_margin="10dp" >

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@id/editText3"
        android:text="Predaj: "
        android:textSize="25dp" />

    <EditText
        android:id="@+id/editText3"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/textView3"
        android:inputType="numberDecimal"
        android:singleLine="true"
        android:textSize="25dp"
        android:textStyle="bold"
        android:editable="false"
        android:textIsSelectable="true" />
</RelativeLayout>

我无法理解似乎是什么问题 - 我已经尝试过清理,重建,重启PC,删除和重新创建整个文件(R.java),但错误不会消失。当我删除这行代码时,一切正常(除了对齐)。我有一种感觉,因为“textView3”是在“editText3”之前定义的,但它在过去的几天里都是这样的。 感谢您的建议 - 非常感谢

4 个答案:

答案 0 :(得分:3)

感谢Francesco Gatto。它确实有助于在TextView中为EditText创建变量,因此代码现在看起来非常相似但实际上有效。

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_margin="10dp" >



     <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/editText1"
        android:text="Cena: "
        android:textSize="25dp" />

    <EditText
        android:id="@id/editText1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/textView1"
        android:inputType="numberDecimal"
        android:singleLine="true"
        android:textSize="25dp"
        android:textStyle="bold" />

</RelativeLayout>

所以我在分配layout_alignBaseline =“@ + id / editText”时已经创建了edittext变量,然后在EditText中我使用了相同的id(不再创建它)。

答案 1 :(得分:1)

你尝试清理项目吗?

或尝试在alignbaseline中编写+ @ id

答案 2 :(得分:0)

在声明它之后引用它并查看是否可以缓解错误。也是你在宣布之前提到的东西。您似乎想要一些可视文本然后是一个框,以便用户可以编辑textview右侧的文本。在RelativeLayouts中,只需让第一个视图自动显示出来,或者你可以将它放在父母身上。即。 (android:layout_alignParentLeft)。在RelativeLayouts中,我们将第一个视图用作父容器之外的起始参考点。我调整了你的代码,请告知它是否有意义:

 <RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_margin="10dp" >



    <EditText
        android:id="@+id/editText3"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:inputType="numberDecimal"
        android:singleLine="true"
        android:textSize="25dp"
        android:textStyle="bold"
        android:editable="false"
        android:textIsSelectable="true" />


<TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@id/editText3"
        android:layout_alignBaseline="@id/editText3"
        android:text="Predaj: "
        android:textSize="25dp" />

</RelativeLayout>

答案 3 :(得分:0)

我知道它已经迟到了,但它可能对有同样问题的人有帮助。

EditText放在TextView上方。它不会影响你正在做的事情,因为它是RelativeLayout

简单来说,Gradle会扫描代码的每一行,因为它没有找到您提到的ID,所以它显示错误。

之前的答案也是正确的,但实施起来要简单得多。