①include的时候,一定要设置include的width和height,否则将出现布局混乱 ②merge的区别,只能用在root节点,表示的是当它被include后,merge会被忽略掉,只引用其子节点 |
include和merge标记的作用主要是为了解决layout的重用问题。 比如我们有三四个Activity但是他们都要用到同一个样式的标题栏,虽然我们把一样的代码copy个三四遍也没关系,但实在是太丑了,而且效率太低,如果这个标题栏要改样式,你岂不是要去三四个地方分别改动。 为了解决这个问题,android中有了include和merge标记
以下为标题栏的layout文件titlebar.xml
<FrameLayout xmlns:android="
http://schemas.android.com/apk/res/android
"
那么在那三四个activity中你可以适用Include标记
<LinearLayout xmlns:android="
http://schemas.android.com/apk/res/android
"
</LinearLayout> 调用了Include之后,titlebar文件的内容就被完全嵌入到了include所指定的位置。而且你还可以在include中重新更改一些属性的值 ,比如
<include android:id=”@+id/news_title”
再来说一下merge标记 上面的include有一个副作用就是他多套了一层root节点FrameLayout ,使得再构图的时候会多花费一点时间 如果你不能容忍这个的话那你可以试一下merge标记 titlebar2.xml <merge xmlns:android=" http://schemas.android.com/apk/res/android ">
</merge> 这样行成的titlebar2文件就少了外层的root节点,merge标记可以直接成为root节点, 当titlebar2被include到文件中时, merge标记就会被忽略掉 ,而直接由里面的ImageView取代原来include的位置。避免了冗余的layout。
所以
include和merge是配合使用
的,不是一个互斥的或者说是平级的关系。
再来说一个在使用这两个标签时最容易出现的问题。 经常会有同学在RelativeLayout中使用include标签 但是却发现include进来的控件无法用layout_alignParentBottom="true"之类的标签来调整。这个真的非常恼火。其实解决方法非常简单,只要你在include的时候同时重载下layout_width和layout_height这两个标签就可以了。如果不重载,任何针对include的layout调整都是无效的! |
|
|
include和merge
Android 4.0
include和merge