1. 程式人生 > >Android LayoutInflater.inflate的原理

Android LayoutInflater.inflate的原理

前言:

在介面的構建、自定義view和一些換膚的控制元件控制元件中都用到了LayoutInflater.inflate這個填充器或者代理了這個方法,很神奇,這個填充器類似一個打氣筒一樣將xml佈局顯示出來。

正文:

         我們開啟LayoutInflater原始碼看看發現inflate有好幾種方法,

public View inflate(int, ViewGroup)

    public View inflate(XmlPullParser, ViewGroup)

    public View inflate(int, ViewGroup, boolean)

    public View inflate(XmlPullParser, ViewGroup, boolean)

這四種方法最終都是都是呼叫這個方法

 public View inflate(XmlPullParser parser, @Nullable ViewGroup root) {
        return inflate(parser, root, root != null);
    }


讓我們進入inflate(parser,root,root !=null)這個方法




讓我們再看看你Java程式碼吧

 public BaseViewHolder onCreateViewHolder(ViewGroup parent, final int viewType) {
        View itemView;
        BaseViewHolder holder;

        itemView = LayoutInflater.from( mActivity ).inflate( R.layout.item_shijian_list, parent, false );
        holder = new ShiJianItemViewHolder( itemView, mActivity, recyclerView );

        return holder;
    }

inflate的第三個引數就是attachToRoot,可以為true也可以為false,這個引數的作用就是,是否把選取的檢視加入到root中。詳情可以參考一下連結:inflate第三個引數的意思