android布局文件转成View对象
2014-11-13 13:43
218 查看
android开发时,我们需要动态的添加view到父布局中。一般我们使用LayoutInflater实现。但是通过查看系统代码发现。
就是通过使用pull解析XML文件,最后生成View对象,如果有嵌套就返回最外层的View对象。
但是,我们需要注意。将一个xml布局,通过inflater方法转成view对象,然后将view对象add到ViewGroup中,有时候我们发现不管怎么修改xml布局中的
layout_width和layout_height不起作用。很奇怪。究其原因,是这个xml布局文件中没有父布局,而我们使用的layout_width、layout_height是指在父布局
中的大小,而不是本身的大小,match_parent表示在父布局中占满,wrap_content表示在父布局包含本身。这也是不叫height、width的原因吧。
也许我们就会感到奇怪,平时我们在使用setContentView时,指定的布局文件并没有指定父布局呀,为啥就会起作用呢。我们通过android sdk自带的工具hierarchyviewer.bat查
看一个xml文件吧。
xml文件:
通过hierarchyviewer查看运行以后的布局文件为:
可以看出画红线部分,才是我们自己写的布局,但是我们运行以后,发现在我们自己的布局其实是嵌套在FrameLayout里边的,所有我们平时添加布局文件时,叫setContentView的原因吧。同时也证明我们自己的本身布局文件内部使用layout_width和layout_height起作用,也添加了父布局了。
就是通过使用pull解析XML文件,最后生成View对象,如果有嵌套就返回最外层的View对象。
但是,我们需要注意。将一个xml布局,通过inflater方法转成view对象,然后将view对象add到ViewGroup中,有时候我们发现不管怎么修改xml布局中的
layout_width和layout_height不起作用。很奇怪。究其原因,是这个xml布局文件中没有父布局,而我们使用的layout_width、layout_height是指在父布局
中的大小,而不是本身的大小,match_parent表示在父布局中占满,wrap_content表示在父布局包含本身。这也是不叫height、width的原因吧。
也许我们就会感到奇怪,平时我们在使用setContentView时,指定的布局文件并没有指定父布局呀,为啥就会起作用呢。我们通过android sdk自带的工具hierarchyviewer.bat查
看一个xml文件吧。
xml文件:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:id="@+id/ll" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="helloworld" /> </LinearLayout>
通过hierarchyviewer查看运行以后的布局文件为:
可以看出画红线部分,才是我们自己写的布局,但是我们运行以后,发现在我们自己的布局其实是嵌套在FrameLayout里边的,所有我们平时添加布局文件时,叫setContentView的原因吧。同时也证明我们自己的本身布局文件内部使用layout_width和layout_height起作用,也添加了父布局了。
相关文章推荐
- Layout inflation在Android环境中是一个专业术语,用于表示某个XML资源布局文件被解析并转化成为一个层级的View对象的过程。
- 对android里布局文件当中的TextView对象设置事件监听,但是不响应问题解决
- Android中将布局文件/View添加至窗口过程分析 ---- 从setContentView()谈起
- Android中将布局文件/View添加至窗口过程分析 ---- 从setContentView()谈起
- 【android】setContentView找不到布局文件
- Android 自定义View及其在布局文件中的使用示例
- [置顶] Android开发 ——线性布局文件、TextView、ListView的基本写法
- Android中将布局文件/View添加至窗口过程分析 ---- 从setContentView()谈起
- android布局文件解析成view树浅析
- android中布局文件中的控件通过findviewbyid无法关联的解决方法
- Android中得到布局文件对象三种方式
- android 在xml布局文件中 ImageView ImageButton出现警告
- android 将图片内容解析成字节数组,将字节数组转换为ImageView可调用的Bitmap对象,图片缩放,把字节数组保存为一个文件,把Bitmap转Byte
- android中布局文件中的控件通过findviewbyid无法关联的解决方法
- android 将图片内容解析成字节数组,将字节数组转换为ImageView可调用的Bitmap对象,图片缩放,把字节数组保存为一个文件,把Bitmap转Byte
- 【Android Training - Performance】提高显示布局文件的性能[Lesson 3 - 按需载入视图(ViewStub的使用方法)]
- android 将图片内容解析成字节数组,将字节数组转换为ImageView可调用的Bitmap对象,图片缩放,把字节数组保存为一个文件,把Bitmap转Byt
- android 将图片内容解析成字节数组,将字节数组转换为ImageView可调用的Bitmap对象,图片缩放,把字节数组保存为一个文件,把Bitmap转Byte
- Android中将布局文件/View添加至窗口过程分析 ---- 从setContentView()谈起
- Android中得到布局文件对象两种方式