include的使用

本文介绍如何通过使用include标签复用Android应用中的布局代码,减少冗余并提高代码可读性。详细展示了如何创建通用布局模块并在不同场景下重用。

在一个项目中我们可能会需要用到相同的布局设计,如果都写在一个xml文件中,代码显得很冗余,并且可读性也很差,所以我们可以把相同布局的代码单独写成一个模块,然后用到的时候可以通过<include /> 标签来重用layout代码。

     app_title.xml:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout android:id="@+id/titleLayout" android:layout_width="fill_parent" android:layout_height="wrap_content"
  3.                         android:background="@drawable/bt" xmlns:android="http://schemas.android.com/apk/res/android">
  4.                         
  5.                 <TextView android:text="@string/login" android:id="@+id/title" android:textSize="20px" android:textColor="@color/white"
  6.                         android:layout_width="wrap_content" android:layout_centerInParent="true" android:layout_height="wrap_content"/>                
  7.                 <Button android:text="返回" android:id="@+id/refresh" android:layout_width="wrap_content" android:layout_height="wrap_content"
  8.                         android:layout_alignParentRight="true" android:focusable="false" android:textColor="@color/white"
  9.                         android:background="@drawable/okbutton" android:layout_marginRight="3px"/>
  10. </RelativeLayout>
复制代码
app_tradelogin.xml:

  1. <?xml version="1.0" encoding="utf-8"?>

  2. <!-- android:layout_below与 android:layout_above 是必须设置的,否则界面不规则,不设置android:layout_above本界面没有滑动效果-->

  3. <ScrollView android:layout_below="@+id/titleLayout" android:layout_above="@+id/appbottom" android:layout_width="fill_parent" 
  4.          android:layout_height="fill_parent" android:layout_centerInParent="true" xmlns:android="http://schemas.android.com/apk/res/android">

  5.         <LinearLayout android:id="@+id/theWholeLinearLayout" android:orientation="vertical" android:layout_width="fill_parent" 
  6.                 android:layout_height="wrap_content" android:paddingLeft="10px" android:paddingTop="6px" android:paddingRight="10px" >
  7.                 <LinearLayout android:id="@+id/linearLayoutLeft" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content">
  8.                         <TableLayout android:id="@+id/widget43" android:layout_width="fill_parent"
  9.                                 android:layout_height="fill_parent" android:orientation="vertical"
  10.                                 xmlns:android="http://schemas.android.com/apk/res/android" android:stretchColumns="1">
  11.                                 <TableRow > 
  12.                                 <!--  引用定义好的TextView样式,如果这里的属性和样式里定义的属性重复,则这里会替换样式里定义的属性-->
  13.                                         <TextView android:id="@+id/traderName" android:text="@string/traderName" style="@style/StyleTextInfo1" mce_style="@style/StyleTextInfo1"/>
  14.                                         <Spinner android:id="@+id/traderNameS" android:layout_width="fill_parent" android:layout_height="wrap_content">
  15.                                         </Spinner>
  16.                                 </TableRow>
  17.                                         
  18.                                 <TableRow>
  19.                                         <TextView android:id="@+id/departName" android:text="@string/departName" style="@style/StyleTextInfo1" mce_style="@style/StyleTextInfo1"/>
  20.                                         <Spinner android:id="@+id/departNameS" android:layout_width="fill_parent" android:layout_height="wrap_content"/>
  21.                                 </TableRow>
  22.                                 
  23.                                 <TableRow >
  24.                                         <TextView android:id="@+id/strComponyName" android:text="@string/accType" style="@style/StyleTextInfo1" mce_style="@style/StyleTextInfo1"/>
  25.                                         <Spinner android:id="@+id/accTyte" android:layout_width="fill_parent" android:layout_height="wrap_content"/>
  26.                                 </TableRow>
  27.                                 
  28.                                 <TableRow >
  29.                                         <TextView android:id="@+id/strUserAcc" android:text="@string/userAcc" style="@style/StyleTextInfo1" mce_style="@style/StyleTextInfo1"/>
  30.                                         <EditText android:id="@+id/accEditText" android:text="" android:numeric="decimal" style="@style/StyleEditText1" mce_style="@style/StyleEditText1"/>
  31.                                 </TableRow>
  32.                                 
  33.                                 <TableRow >
  34.                                         <TextView android:id="@+id/userPwd" android:text="@string/userPWD" style="@style/StyleTextInfo1" mce_style="@style/StyleTextInfo1"/>
  35.                                         <EditText android:id="@+id/userPwdET" android:text="" android:password="true" style="@style/StyleEditText1" mce_style="@style/StyleEditText1"/>
  36.                                 </TableRow>
  37.                                 
  38.                                 <TableRow >
  39.                                         <TextView android:id="@+id/commPwd" android:text="@string/commPWD" style="@style/StyleTextInfo1" mce_style="@style/StyleTextInfo1"/>
  40.                                         <EditText android:id="@+id/commPwdET" android:text="" android:password="true" style="@style/StyleEditText1" mce_style="@style/StyleEditText1"/>
  41.                                 </TableRow>
  42.                         </TableLayout>
  43.                 </LinearLayout>
  44.                 
  45.                 <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content">
  46.                         
  47.                                 <LinearLayout android:id="@+id/linearLayoutTab1" android:layout_height="wrap_content" 
  48.                                         android:layout_width="fill_parent" android:orientation="horizontal">
  49.                                         
  50.                                         <LinearLayout android:id="@+id/linearLayoutTab2" android:layout_height="wrap_content" 
  51.                                                 android:layout_width="fill_parent" android:orientation="horizontal" android:layout_weight="1">
  52.                                                 <CheckBox android:id="@+id/recordAcc"  android:layout_width="wrap_content" android:layout_height="wrap_content"/>
  53.                                                 <TextView android:id="@+id/commPwd" android:text="@string/saveUserAcc" style="@style/StyleTextInfo1" mce_style="@style/StyleTextInfo1"/>
  54.                                         </LinearLayout>        
  55.                                         <LinearLayout android:id="@+id/linearLayoutTab2" android:layout_height="wrap_content" 
  56.                                                 android:layout_width="fill_parent" android:orientation="horizontal" android:layout_weight="1">
  57.                                                 
  58.                                                 <CheckBox android:id="@+id/hideAcc" android:layout_width="wrap_content" android:layout_height="wrap_content"/>
  59.                                                 <TextView android:id="@+id/commPwd" android:text="@string/ycUserAcc" style="@style/StyleTextInfo1" mce_style="@style/StyleTextInfo1"/>
  60.                                         </LinearLayout>                
  61.                                 </LinearLayout>
  62.                                 
  63.                         <LinearLayout android:id="@+id/linearLayoutTab1" android:layout_height="wrap_content" 
  64.                                         android:layout_width="fill_parent" android:orientation="horizontal">
  65.                         
  66.                                         <LinearLayout android:layout_width="220px" android:layout_height="wrap_content" android:orientation="horizontal" 
  67.                                                 android:gravity="center">
  68.                                                 
  69.                                                         <Button android:id="@+id/confirmexch" android:gravity="center" android:layout_width="wrap_content"  
  70.                                                                         android:layout_height="50px" android:textSize="22dp" android:text="@string/login" android:layout_weight="1"
  71.                                                                         android:focusable="false" android:textColor="@color/white" android:background="@drawable/buttonl"/>
  72.                                         </LinearLayout>
  73.                                 
  74.                                         <LinearLayout android:id="@+id/linearLayoutTab" android:layout_height="wrap_content" 
  75.                                                 android:layout_width="fill_parent" android:gravity="center">
  76.                                                 <ImageView android:layout_width="wrap_content" android:layout_height="50px" android:id="@+id/myImage"/>
  77.                                         </LinearLayout>
  78.                 </LinearLayout>
  79.         </LinearLayout>
  80.         </LinearLayout>
  81. </ScrollView>
复制代码
app_bottom.xml:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout android:id="@+id/appbottom" android:orientation="vertical" android:layout_width="fill_parent" 
  3.                 android:layout_height="wrap_content" android:layout_alignParentBottom="true"
  4.                 xmlns:android="http://schemas.android.com/apk/res/android">
  5.                 
  6.         <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" 
  7.                 android:layout_height="wrap_content" android:background="@drawable/light">
  8.                 <ImageView  android:id="@+id/about" android:layout_width="30px" android:layout_height="wrap_content" android:src="@drawable/ttt"
  9.                                 android:layout_alignParentLeft="true"/>
  10.                 <TextView android:id="@+id/light" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="@color/black"/>
  11.         </LinearLayout>
  12.         
  13.         <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" 
  14.                 android:layout_height="wrap_content" android:background="@drawable/mainmenu">
  15.                 <Button android:id="@+id/quotButton" android:layout_weight="1" android:layout_width="52px" android:layout_height="wrap_content"
  16.                         android:textColor="@color/white" android:text="" android:background="@drawable/button1"/>
  17.                         
  18.                 <Button android:id="@+id/entrustButton" android:layout_weight="1" android:layout_width="52px" android:layout_height="wrap_content"
  19.                         android:textColor="@color/white" android:text="" android:background="@drawable/button1"/>
  20.                 <Button android:id="@+id/queryButton" android:layout_weight="1" android:layout_width="52px" android:layout_height="wrap_content"
  21.                         android:textColor="@color/white" android:text="" android:background="@drawable/button1"/>
  22.                         
  23.                 <Button android:id="@+id/yinZhengButton" android:layout_weight="1" android:layout_width="52px" android:layout_height="wrap_content"
  24.                         android:textColor="@color/white" android:text="" android:background="@drawable/button1"/>
  25.                         
  26.                 <Button android:id="@+id/recordButton" android:layout_weight="1" android:layout_width="52px" android:layout_height="wrap_content"
  27.                         android:textColor="@color/white" android:text="" android:background="@drawable/button1"/>
  28.                         
  29.                 <Button android:id="@+id/logoutButton" android:layout_weight="1" android:layout_width="52px" android:layout_height="wrap_content"
  30.                         android:textColor="@color/white" android:text="" android:background="@drawable/button1"/>
  31.         </LinearLayout>
  32. </LinearLayout>
复制代码
tradelogin_portrait.xml:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_parent" style="@style/StyleLayoutMain" mce_style="@style/StyleLayoutMain"
  3.         xmlns:android="http://schemas.android.com/apk/res/android">
  4.         
  5.         <!-- include标签内不能设置RelativeLayout属性,如android:layout_alignParentBottom,因为不起作用 -->
  6.         <!-- include标签内设置id属性后(android:id),其引用的布局layout内的id属性就不起作用了,怀疑是其引用的layout外层包裹了一层include标签 
  7.                 或者是覆盖了其内的属性id-->
  8.         <!-- 如果没有include标签,所有布局代码都写在一个xml文件中,界面会显得很冗余,可读性很差。而且界面加载的时候是按照顺序加载的,前面的布局不能
  9.                 调用其后面的布局id。而采用include后,一个include中可以引用其后的include中的布局id属性 -->
  10.         <include android:id="@id/titleLayout" layout="@layout/app_title" />

  11.         <include layout="@layout/app_tradelogin"/>
  12.                 
  13.         <include layout="@layout/app_bottom"/>
  14.         
  15. </RelativeLayout>
复制代码
效果如下: 1.gif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值