分类: Android平台
2014-11-27 17:41:40
LayoutInflater主要是用于加载布局,广泛应用于动态添加View。Activity中调用setContentView()方法来加载布局的,其内部也是使用LayoutInflater来加载布局的。
LayoutInflater的基本用法:
1. 首先需要获取到LayoutInflater的实例。
LayoutInflater layoutInflater = LayoutInflater.from(context);
或者
LayoutInflater layoutInflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
2. 获得LayoutInflater实例之后,调用它的inflate()方法来加载布局。
layoutInflater.inflate(resourceId, root);
inflate()方法一般接收两个参数,resourceId是要加载的布局id,root是指给该布局的外部再嵌套一层父布局,如果不需要就直接传null。
3. 创建了一个布局的实例后,将它添加到指定的位置显示。如:调用LinearLayout的addView()方法将它添加到LinearLayout中。
使用layout_width和layout_height来设置View的大小失效问题:
button_layout.xml文件:
android:layout_width="200dp"
android:layout_height="50dp"
android:text="Button" >
它们其实是用于设置View在布局中的大小的,也就是说,首先View必须存在于一个布局中,之后如果将layout_width设置成match_parent表示让View的宽度填充满布局,如果设置成wrap_content表示让View的宽度刚好可以包含其内容,如果设置成具体的数值则View的宽度会变成相应的数值。
修改才能让按钮的大小改变,解决方法其实有很多种,最简单的方式就是在Button的外面再嵌套一层布局。
android:layout_width="match_parent"
android:layout_height="match_parent" >
android:layout_width="200dp"
android:layout_height="50dp"
android:text="Button" >
在Activity中指定布局文件的时候,最外层的那个布局layout_width和layout_height指定大小有效的原因是:在setContentView()方法中,Android会自动在布局文件的最外层再嵌套一个FrameLayout,所以layout_width和layout_height属性才会有效果。
任何一个Activity中显示的界面其实主要都由两部分组成,标题栏和内容布局。标题栏就是在很多界面顶部显示的那部分内容,可以在代码中控制让它是否显示。而内容布局就是一个FrameLayout,这个布局的id是content,我们调用setContentView()方法时所传入的布局其实就是放到这个FrameLayout中的。