在Android的layout样式定义中,可以使用xml文件方便的实现,有时候为了模块的复用,使用include标签可以达到此目的。例如:

<include layout="@layout/otherlayout"></div> 

Android开发的官方网站的说明在这里。
其中,有提到:

Similarly, you can override all the layout parameters. This means that any android:layout_* attribute can be used with the<include>tag.

意思是任何android:layout_*属性都可以应用在标签中。

如果使用如下代码:

<Relativelayout    android:layout_width="fill_parent"    android:layout_height="wrap_content" >    <Textview        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="@string/somestring"        android:id="@+id/top" />    <include layout="@layout/otherlayout"        android:layout_below="@id/top" /></Relativelayout > 

发现include的otherlayout,并没有在如我们预期的在id/top这个TextView下面,而是忽略了android:layout_below属性。经过Google发现,很多人遇到类似的问题。

有解决方法是在include的外面再包一层LinearLayout,如下:

<Linearlayout    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:layout_below="@id/top" >    <include layout="@layout/otherlayout"></Linearlayout > 

在Statckoverflow上找到了更好的解决方法: 解答道:必须同时重载layoutwidth和layoutheight熟悉,其他的layout_*属性才会起作用,否这都会被忽略掉。上面的例子应该写成这样:

<include layout="@layout/otherlayout">    android:layout_height="wrap_content"    android:layout_width="fill_parent"    android:layout_below="@id/top" />

另外,关于xml的复用,还可以使用merge标签,merge标签主要是用来优化显示的,减少View树的层级,可以参考这里:https://developer.android.com/resources/articles/layout-tricks-merge.html,翻译版在这里:http://apps.hi.baidu.com/share/detail/20871363


原文: http://www.race604.com/using-include-in-layout/

更多相关文章

  1. android:layout_weight的真实含义
  2. Android(安卓)Pull解析
  3. Android中取消GridView & ListView默认的点击背景色
  4. android客户端程序访问服务器端webservice,几篇不错的文章!
  5. Jsoup使用教程(一)
  6. mybatisplus的坑 insert标签insert into select无参数问题的解决
  7. 箭头函数的基础使用
  8. NPM 和webpack 的基础使用
  9. Python list sort方法的具体使用

随机推荐

  1. Android Dialog全屏显示
  2. Windows平台上编译OpenCV的Android版本
  3. Android Xutils 框架
  4. Android中弹出输入法界面不影响app界面布
  5. android之CTS兼容性测试
  6. [置顶] Android超精准计步器开发-Dylan计
  7. Android系统分析之带着问题看Handler
  8. android studio 在线更新android sdk,遇到
  9. 使用 Android快速开发框架 Afinal 0.3 快
  10. 系出名门Android(5) - 控件(View)之TextV