android布局优化之<include>标签的使用
来源:互联网 发布:王珊数据库视频教程 编辑:程序博客网 时间:2024/05/18 06:41
1,<include>标签有什么用?
用来重用layout代码.
2,<include>标签该怎么用?
a,新建layout_common_title.xml
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="50dp" android:background="#00f" xmlns:tools="http://schemas.android.com/tools"> <TextView android:id="@+id/tv_back" android:layout_width="50dp" android:layout_height="50dp" android:background="@drawable/back"/> <TextView tools:text="标题" android:textSize="18sp" android:textColor="@android:color/white" android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center" android:layout_centerInParent="true" android:id="@+id/tv_title"/> <TextView android:id="@+id/tv_forward" android:layout_width="50dp" android:layout_height="50dp" android:layout_alignParentRight="true" android:background="@drawable/forward"/></RelativeLayout>
b,在activity_main.xml中
<?xml version="1.0" encoding="utf-8"?><RelativeLayout 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" tools:context="com.example.wangzhichao.demo.MainActivity"> <include android:id="@+id/main_common_title" layout="@layout/layout_common_title" /></RelativeLayout>
c,在MainActivity.java中
public class MainActivity extends Activity { private TextView mTvTitle; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mTvTitle = (TextView) findViewById(R.id.tv_title); mTvTitle.setText("标题"); }}
d,运行效果
3,<include>标签使用时该注意些什么?
a,在<include>标签下设置的id,会把重用的那个layout的id屏蔽掉
a.1,在layout_common_title.xml中的根节点添加id
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="50dp" android:background="#00f" android:id="@+id/relativelayout_inside" xmlns:tools="http://schemas.android.com/tools"> <!-省略掉一些代码-></RelativeLayout>a.2,在MainActivity.java中
public class MainActivity extends Activity { private TextView mTvTitle; private RelativeLayout mMainCommonTitle; private RelativeLayout mRelativeLayoutInside; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mTvTitle = (TextView) findViewById(R.id.tv_title); mTvTitle.setText("标题"); mMainCommonTitle = (RelativeLayout) findViewById(R.id.main_common_title); mRelativeLayoutInside = (RelativeLayout) findViewById(R.id.relativelayout_inside); Log.d("MainActivity", "mMainCommonTitle:" + mMainCommonTitle); Log.d("MainActivity", "mRelativeLayoutInside:" + mRelativeLayoutInside); }}
查看日志如下:
06-09 00:53:50.020 6587-6587/? D/MainActivity: mMainCommonTitle:android.widget.RelativeLayout{c15bc58 V.E..... ......ID 0,0-0,0 #7f0b0056 app:id/main_common_title}
06-09 00:53:50.020 6587-6587/? D/MainActivity: mRelativeLayoutInside:null
解决办法:1,根容器id与include id设置相同2,若id不同,那么只设置一个就好了
b.在<include>标签下设置其他属性值的问题
b.1,在使用include标签时,除了使用layout属性加载布局文件时,一般不需要设置其他属性了,也就是使用layout属性就够了.
b.2,有时为了布局的需要,仍要使用诸如layout_margin等除id之外的其他属性,这时就要注意,为了使这些其他属性起作用,必须同时设置include标签的宽高属性.而且只能设置layout_xxx的属性,设置其他属性是不会起作用的.例如,
<include android:id="@+id/main_common_title" layout="@layout/layout_common_title" android:layout_width="match_parent" android:layout_height="100dp" android:layout_alignParentBottom="true" />
运行截图,位置和高度都发生了变化.
b.3,include标签的宽高属性值会覆盖根节点设置的宽高属性值.
解决办法:在<include>标签下设置其他属性,是对layout的根节点属性的重新设置.因为通过layout属性引用的layout都是一样的,而通过设置其他属性才能产生一些变化,这就是不变中的变.
c.<include>标签有个缺点,就是可能产生多余的层级,比如,被复用布局是一个垂直的LinearLayout布局,当以include标签插入到另一个垂直的LinearLayout布局中时,结果就是一个垂直的LinearLayout里包含一个垂直的LinearLayout,这个嵌套的布局并没有实际意义,只会让UI性能变差.这时就可以使用merge标签.
参考资料:
1,http://blog.csdn.net/u011277123/article/details/52774428
2,http://blog.csdn.net/shuqiaoniu/article/details/46013771
- android布局优化之<include>标签的使用
- Android布局优化之include、merge、ViewStub的使用
- Android UI优化之include标签的使用
- android优化之布局优化-Merge标签的使用
- android布局标签<include />使用
- [Android developers blog 学习笔记]android 布局优化:标签include和merge的使用
- Android布局优化几个重要标签的使用include、merge、ViewStub、requestFocus
- Android 布局优化几个重要标签的使用include、merge、ViewStub、requestFocus
- Android布局优化之include
- Android 布局优化之include
- android 布局优化标签<include/>、<merge />、<ViewStub />
- android 布局优化(一),include标签
- Android 布局优化 include,merge,viewstub标签
- android布局优化之<merge>标签的使用
- Android layout之优化:使用include和merge 标签
- Android layout之优化:使用include和merge 标签
- Android布局文件中include标签的使用
- Android 布局优化merge标签的使用
- CodeForces 814A An abandoned sentiment from past
- 项目jdk/jar包冲突分析处理过程
- Find the first minimum number and the second one.
- JS内存泄漏排查方法(Chrome Profiles)
- JVM编译优化
- android布局优化之<include>标签的使用
- 串口通讯项目
- 欢迎使用CSDN-markdown编辑器
- Spark中External Datasource实现数据迁移
- CodeForces 814B An express train to reveries
- linux Xinetd服务简介
- JSP/Servlet
- python学习笔记
- KMP算法