Android用<include>复用/重用布局

Android用用<include>复用/重用布局


用<include>嵌入其他布局文件

<LinearLayout xmlns:android ="http://schemas.android.com/apk/res/android"  
             xmlns:tools= "http://schemas.android.com/tools"  
   android:layout_width = "match_parent"  
   android:layout_height= "match_parent"  
   android:paddingBottom= "@dimen/activity_vertical_margin"  
     android:paddingLeft= "@dimen/activity_horizontal_margin"  
    android:paddingRight= "@dimen/activity_horizontal_margin"  
      android:paddingTop= "@dimen/activity_vertical_margin"  
   tools:context        = ".MainActivity"  
   android:orientation  = "vertical" >  
   <include layout= "@layout/titlebar">  
   <TextView  
      android:layout_width ="wrap_content"  
      android:layout_height ="wrap_content"  
      android:text ="@string/hello_world" >  
< LinearLayout>
你也可以在当前布局中复写重用组件的android:layout_* 属性
<include  
   android:id ="@+id/news_title"  
   android:layout_width ="match_parent"  
   android:layout_height ="match_parent"  
   layout= "@layout/titlebar" >

使用<merge>标签作为根,

<merge/>标签可以帮助你在你的视图层次中消除多余的视图组,当一个布局包含另外一个布局时。当你的主布局是一个垂直结构的LinearLayout包含两个连续的能被其它布局重用的视图,被你放置在布局中的两个可重用的视图都需要各自的根视图,使用另外一个LinearLayout来充当可重用视图的根视图时,会导致一个垂直结构的LinearLayout嵌套在另外一个垂直结构的LinearLayout中,嵌套的LinearLayout除了减慢你的UI渲染速度以外没有任何的实际作用,为了避免这种情况的发生,我们可以使用<merge/>标签来作为可重用布局组件的根视图;
<merge xmlns:android="http://schemas.android.com/apk/res/android">
   <Button
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content"
      android:text="@string/add">
   <Button
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content"
      android:text="@string/delete">
<merge>
同样是使用<include/>标签来添加进布局中,这样Android系统并不会理会<merge/>标签,而是直接把两个Button放置在布局中,避免了不必要的嵌套。另外需要注意的是<merge/>只可以作为布局的根节点,当需要包含其它布局组件的布局本身是以<merge/>为根节点的话,需要将被导入的xml layout置于viewGroup中,同时需要设置attachToRoot为True

转载于:https://my.oschina.net/u/184090/blog/323563

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值