在Android xml文件中大家都知道一般在定义一个id时用@+id/id名字,而在引用一个id,比如在已定义的控件的左边,就要用到@id/已定义的控件。
详细的解释童鞋们可以看这篇文章http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2012/1019/443.html
今天下了一份代码,在看到xml文件时,突然很疑惑,下面是作者的xml
<com.byl.clipheadphoto.clip.ClipImageLayout android:id="@+id/id_clipImageLayout" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_above="@+id/rl_botom" android:layout_below="@+id/title_bar" /> <RelativeLayout android:id="@id/rl_botom" android:layout_width="fill_parent" android:layout_height="50dp" android:layout_alignParentBottom="true" android:background="#FFFFFF" > <Button android:id="@+id/id_action_clip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:layout_margin="10dp" android:background="@null" android:padding="5dp" android:text="确 定" android:textColor="#18B4ED" android:textSize="16sp" /> </RelativeLayout>
看到作者的写法时感到很疑惑,怎么引用也用到了@+id/,查资料也没找到具体解释,一篇文章中解释@+id 新增一个资源id
而在上面的布局文件中,id_clipImageLayout必须在rl_botom上面,而android:layout_above="@+id/rl_botom"
时,rl_bottom还没有定义,直接@id/rl_bottom会报错,找不到资源rl_bottom,但是xml文件中rl_bottom和id_clipImageLayout
位置种种原因不能调整,怎么办?上面说了@+id/是定义资源,在R.java中生成独一的int型变量,那么就可以直接引用时用
@+id/,等到rl_bottom定义时@+id/会发现已经定义,就不再R.java文件中生成,或者可以用android:id="@id/rl_bottom"一样可以的。