LayoutInflater.from(this).inflate()

LayoutInflater.from(this).inflate()

View view = LayoutInflater.from(Context context)
                          .inflate(int resource, ViewGroup root, boolean attachToRoot)

注:以下的layoutView特指的从resource布局文件解析出来View;
1.root为null,attachToRoot则无效;
2.root不为null,attachToRoot设为true,则会把layoutView添加到root布局中。返回值view == root;
3.root不为null,attachToRoot设为false,则会将layoutView自身的最外层(xml根节点)的所有android:layout属性进行设置并生成view,而该view的根节点android:layout属性不会立即生效,而是当该view后面被添加到父view中时,这些android:layout属性会自动生效。例如ListView/RecycleView中的getView()做法,只是产生了view,但后期需要附着在ViewGroup中才生效,例如被添加在ListView中。返回值view !=root;
4.在不设置attachToRoot参数的情况下,如果root不为null,由源码可知attachToRoot参数默认为true。

又如:
代码1==代码2

//code sample 1
inflater.inflate(R.layout.custom_button, mLinearLayout, true);
//code sample 2
Button button = (Button) inflater.inflate(R.layout.custom_button, mLinearLayout, false);
mLinearLayout.addView(button);

你可能感兴趣的:(Android)