鸟语天空
<merge>标签
post by:追风剑情 2016-6-21 18:07

      如果你经常使用<include>标签,布局可能会变得嵌套过多从而导致UI绘图变慢。<merge>标签可以用来解决这个问题。<merge>标签指导系统移除子布局的顶层容器。当你包含一个子布局时,里面包含的视图会被合并到主布局中去,但没有额外的容器视图。例如给定这个布局:

layout_merge.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    
	<include layout="@layout/merge_text"/>
	<include layout="@layout/merge_text"/>
</LinearLayout>

merge_text.xml

<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    
	<ImageView 
	    android:id="@+id/icon"
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content"
	    android:src="@drawable/ic_launcher"/>
	
	<TextView 
	    android:id="@+id/textView"
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content"
	    android:text="Hello merge"/>
</merge>

系统合并了包含子布局之后,所形成的布局层次看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    
	<ImageView 
	    android:id="@+id/icon"
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content"
	    android:src="@drawable/ic_launcher"/>
	
	<TextView 
	    android:id="@+id/textView"
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content"
	    android:text="Hello merge"/>
	
	<ImageView 
	    android:id="@+id/icon"
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content"
	    android:src="@drawable/ic_launcher"/>
	
	<TextView 
	    android:id="@+id/textView"
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content"
	    android:text="Hello merge"/>
</LinearLayout>

包含的<merge>标签已经被移除。尽管这是一个简单的例子,<merge>标签提供了使用相似组件构建复杂布局的方便方法。


注意:使用<merge>标签需要构造子布局来适配父布局。例如,你不能在包含FrameLayout的层级上使用为LinearLayout设计的布局(从技术上来说这并不会被阻止,但是这样做并没有什么意义)。

运行效果

11111.png

评论:
发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容