Android XML中资源ID能否在声明前使用?实测编译运行均正常
在Android布局XML中,资源ID是否可以在声明之前被引用?
答案是可以。
Android的布局XML解析过程并非按代码书写顺序线性执行,而是会先完成整个布局文件中所有资源ID的收集与注册,之后再处理各个控件的布局属性(包括ID引用)。所以即使像你Demo里这样,让LinearLayout先引用后面才声明ID的Button,编译和运行都不会出问题。
你的Demo XML代码:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:id ="@+id/view" android:layout_width="100dp" android:layout_height="100dp" android:background="@color/black" android:layout_alignBottom="@id/bt"/> <Button android:id="@+id/bt" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text=" am a button" /> </RelativeLayout>
对应的Activity代码:
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } }
不过需要注意,虽然语法上允许这种写法,但从代码可读性和维护性角度来说,建议尽量先声明被引用的控件,再写依赖它的控件,这样其他开发者阅读代码时能更清晰地理解布局关系。
内容的提问来源于stack exchange,提问作者Jack_Du
相关产品推荐
相关产品推荐

