您的位置:首页 > 移动开发 > Android开发

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文件:

<?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起作用,也添加了父布局了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐