4

根据官方网站,Android 从 1.6 版本开始支持前向声明。

在 manifest.xml 中将 min SDK 和目标 SDK 要求都调整为“4”后,eclipse 的布局编辑器仍然抱怨相对布局中的未知声明:

<xml>

<CheckBox 
  android:layout_width="wrap_content" 
  android:layout_height="wrap_content"
  android:id="@+id/ChkBoxSaveuser"
  android:text="@string/options_saveuser"
  android:layout_above="@id/ChkBoxSavePwd"
  android:layout_marginTop="20dp"
  android:layout_alignLeft="@id/EditTxtServer"/>

 <EditText 
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:id="@+id/EditTxtServer" 
  android:maxLines="1"
  android:minWidth="200dp"
  android:layout_marginTop="10dp"
  android:layout_gravity="center_horizontal"
  android:layout_above="@id/ChkBoxSaveuser"/>

</xml>

在此行找到多个注释:

  • ERROR 错误:未找到与给定名称匹配的资源(位于“layout_above”,值为“@id/ChkBoxSavePwd”)。

  • ERROR 错误:未找到与给定名称匹配的资源(位于“layout_alignLeft”,值为“@id/EditTxtServer”)。

清洁/重建没有帮助..有人偶然发现这件事吗?

4

1 回答 1

17

要使用前向引用,请在第一次使用引用时声明引用(使用“@+id/...”符号),而不是在实际元素上。

<xml>

<CheckBox 
  android:layout_width="wrap_content" 
  android:layout_height="wrap_content"
  android:id="@+id/ChkBoxSaveuser"
  android:text="@string/options_saveuser"
  android:layout_above="@+id/ChkBoxSavePwd"
  android:layout_marginTop="20dp"
  android:layout_alignLeft="@+id/EditTxtServer"/>

 <EditText 
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:id="@id/EditTxtServer" 
  android:maxLines="1"
  android:minWidth="200dp"
  android:layout_marginTop="10dp"
  android:layout_gravity="center_horizontal"
  android:layout_above="@id/ChkBoxSaveuser"/>

</xml>
于 2010-12-26T04:28:50.850 回答