View.inflate() 和 LayoutInflater.from(this).inflate() 的区别

        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);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
java.lang.IllegalStateException: ScrollView can host only one direct child at androidx.core.widget.NestedScrollView.addView(NestedScrollView.java:507) at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:1131) at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:72) at android.view.LayoutInflater.rInflate(LayoutInflater.java:1101) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1088) at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:1130) at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:72) at android.view.LayoutInflater.rInflate(LayoutInflater.java:1101) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1088) at android.view.LayoutInflater.inflate(LayoutInflater.java:686) at android.view.LayoutInflater.inflate(LayoutInflater.java:505) at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:360) at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:443) at com.android.tools.idea.layoutlib.LayoutLibrary.createSession(LayoutLibrary.java:121) at com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:722) at com.android.tools.idea.rendering.RenderTask.lambda$inflate$9(RenderTask.java:879) at com.android.tools.idea.rendering.RenderExecutor$runAsyncActionWithTimeout$3.run(RenderExecutor.kt:194) at com.android.tools.idea.rendering.RenderExecutor$PriorityRunnable.run(RenderExecutor.kt:292) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:829)
06-06

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值