大道之行,天下为公。这篇文章主要讲述Android在layout xml中使用include完成静态加载相关的知识,希望能为你提供帮助。
android在layout xml中使用include完成静态加载include静态加载:
不仅可以加载布局,还可以加载控件(控件标签名要在最外层)
include标签中有个layout属性就是专门用来加载的。
在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" />
【Android在layout xml中使用include完成静态加载】另外,关于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/
推荐阅读
- android开发学习之路——连连看之游戏逻辑
- android应用开发-从设计到实现 3-4 静态原型的状态栏
- Android ListView and Tips.
- 回调深入理解 同步回调 以android中View.OnClickListener为列
- android studio更新gradle失败的解决办法-转
- Andoid 更好的Android多线程下载框架
- Android Widget和悬浮窗 原理
- 浅谈call , apply ,bind 的 差异
- 创建Facelets视图并映射Faces Servlet