美文网首页
自定义View-23 onFinishInflate方法在哪里调

自定义View-23 onFinishInflate方法在哪里调

作者: zsj1225 | 来源:发表于2018-07-14 12:48 被阅读2次

    onFinishInflate 在XML解析完毕后调用. 而setContentView(R.layout.activity_main)方法对xml进行解析和添加.setContentView最终会调用LayoutInflater的inflate方法.

        public View inflate(@LayoutRes int resource, @Nullable ViewGroup root) {
            return inflate(resource, root, root != null);
        }
        
        public View inflate(@LayoutRes int resource, @Nullable ViewGroup root, boolean attachToRoot) {
            try {
                return inflate(parser, root, attachToRoot);
            } finally {
                parser.close();
            }
        }
        
        public View inflate(XmlPullParser parser, @Nullable ViewGroup root, boolean attachToRoot) {
            synchronized (mConstructorArgs) {
                try {
    
                    if (TAG_MERGE.equals(name)) {
                        rInflate(parser, root, inflaterContext, attrs, false);
                    } else {
                        rInflateChildren(parser, temp, attrs, true);
                    }
                }
                return result;
            }
        }
        
        final void rInflateChildren(XmlPullParser parser, View parent, AttributeSet attrs,
                boolean finishInflate) throws XmlPullParserException, IOException {
            rInflate(parser, parent, parent.getContext(), attrs, finishInflate);
        }
        
        
        void rInflate(XmlPullParser parser, View parent, Context context,
                AttributeSet attrs, boolean finishInflate) throws XmlPullParserException, IOException {
            //这里回调onFinishInflate方法
            if (finishInflate) {
                parent.onFinishInflate();
            }
        }
    
    

    相关文章

      网友评论

          本文标题:自定义View-23 onFinishInflate方法在哪里调

          本文链接:https://www.haomeiwen.com/subject/rftypftx.html