根据官方网站,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>
清洁/重建没有帮助..有人偶然发现了这件事吗?在此行找到多个注释:
错误错误:找不到与给定名称匹配的资源(在'layout_above'中,值为'@id / ChkBoxSavePwd')。
错误错误:找不到与给定名称匹配的资源(在'layout_alignLeft'处有值) '@ ID / EditTxtServer')。
答案 0 :(得分:17)
要使用前向引用,请在第一次使用引用时声明引用(使用&#34; @ + 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>