llContainer = findViewById(R.id.llContainer);
// 第一种情况下:
View view = View.inflate(this, R.layout.activity_test, null);
// inflate(resource, root, root != null); R.layout.activity_main null false
ViewGroup.LayoutParams layoutParams = view.getLayoutParams();
// 这种情况下 layoutParams 应该为null,因为它没有父亲,一个view的LayoutParams,主要是依靠父布局来决定
System.out.println("layoutParams : " + layoutParams);
// 因为没有父亲,所以你获取view的父亲就是为null
ViewParent parent = view.getParent();
//父控件也应该是为null
System.out.println("parent : " + parent);
System.out.println("view : " + view);// android.widget.LinearLayout{113d4dd V.E 意思就是最外层的view为Linearlayout
// 第二种情况下:
View view2 = View.inflate(this, R.layout.activity_test, llContainer);
// inflate(resource, root, root != null); R.layout.activity_main llContainer true
ViewGroup.LayoutParams layoutParams2 = view2.getLayoutParams();
// 这个时候layoutParams不为空
System.out.println("layoutParams2 : " + layoutParams2);
// parent2 也不为空
ViewParent parent2 = view2.getParent();
System.out.println("parent2 : " + parent2);
// 第三种方式:
// 还有一种是想生成layoutParams,但是不想不view加入的ViewGroup中去,比如recycleView的onBindViewHolder
View view3 = LayoutInflater.from(this).inflate(R.layout.activity_test, llContainer, false);
// layoutParams3 不为空
ViewGroup.LayoutParams layoutParams3 = view3.getLayoutParams();
// parent3 为空
ViewParent parent3 = view3.getParent();
// android.widget.LinearLayout$LayoutParams@a44f420 parent3 : null
System.out.println("layoutParams3 : " + layoutParams3 + " parent3 : " + parent3);
View.inflate() 和 LayoutInflater.from(this).inflate() 的区别
最新推荐文章于 2023-12-06 00:56:16 发布