Android的用户界面布局是在XML文件中静态记载,在Android的Java程序中动态加载的。当编译Android应用程序时,每一个XML布局文件被编译成View视图资源,应用程序代码在Activity.onCreate()回调中实现布局资源的加载,通过调用setContent View()传递给它的形式引用到布局资源R.layout.layout_file_name。
例如,如果XML布局文件保存在main.xml,实现Activity加载的代码如下:
在Android的开发中,布局文件可以很方便地对各个UI控件进行位置安排和属性设置,而在程序中可以直接取得控件并赋予对应的操作功能。但是,对于一个复杂的界面设计,如果把所有布局都放在一个文件中来描述,那么这个文件会显得比较臃肿、结构也变得无法清晰。为此,Android提供了能够将几个不同的布局文件整合在一起的功能,这就是重用布局(Include),即包括多个布局。下面用一个例子来具体说明如何使用重用布局。
首先新建一个布局文件titlebar.xml,内容如下:
然后修改布局文件main.xml,内容如下:
(www.xing528.com)
在模拟器的运行结果如图4-11所示。
当一个布局包含另外一个布局时,<merge/>标签可以帮助在视图层次中消除多余的视图组。当主布局是一个垂直结构的线性布局,包含两个连续的能被其他布局重用的视图,被放置在布局中的两个可重用的视图都需要各自的根视图,使用另外一个线性布局来充当可重用视图的根视图时,会导致一个垂直结构的线性布局嵌套在另外一个垂直结构的线性布局中,嵌套的线性布局除了减慢UI渲染速度以外没有任何的实际作用。为了避免这种情况的发生,可以使用<merge/>标签来作为可重用布局组件的根视图。
布局文件titlebar.xml的内容可修改如下:
图4-11 重用布局的显示
同样,使用<include/>标签添加进布局中,这样Android系统并不会理会<merge/>标签,而是直接把两个Button放置在布局中,避免了不必要的嵌套。另外需要注意的是,<merge/>只可以作为布局的根节点,当需要包含其他布局组件的布局本身以<merge/>为根节点时,需要将被导入的xml layout置于ViewGroup中,同时需要设置attachToRoot为“True”。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。