Android之LayoutInflater了解(20190109)
inflate方法简单说明
/**
resource : 布局的资源ID,生成fragment视图
root : 视图的父视图,通常我们需要父视图来正确配置组件
attachToRoot : 告知布局生成器是否将生成的视图添加给父视图
*/
inflate(int resource, ViewGroup root, boolean attachToRoot)
当root有值:
- 如果attachToRoot为true,就直接将这个布局添加到root父布局了,并且返回的view就是父布局
- 如果attachToRoot为false,就不会添加这个布局到root父布局,返回的view为resource指定的布局
当root为null:
- 如果root为null,attachToRoot将失去作用,设置任何值都没有意义。同时这个布局的最外层参数就没有效了
inflate方法root参数的作用
View的布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="100dp">
<TextView
android:id="@+id/textView"
android:textSize="30sp"
android:gravity="center"
android:background="#ffcccc"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
其实 View 必须存在于一个父布局中,这样 layout_width 和 layout_height 才会有效,这也是为什么这两个属性叫作 layout_width 和 layout_height,而不是 width 和 height。只有 inflate(int resource, ViewGroup root, boolean attachToRoot) 的第二个参数不为空时,resource 的最外层布局参数才生效
- 当
View view= LayoutInflater.from(context).inflate(R.layout.recycler_item_layout,parent,false);
时: LinearLayout 的 layout_width 和 layout_height 都会失效 - 当
View view= LayoutInflater.from(context).inflate(R.layout.recycler_item_layout,parent,false);
时: LinearLayout 的宽高都有效
网友评论