Android LayoutInflater.inflate的原理
阿新 • • 發佈:2019-01-01
前言:
在介面的構建、自定義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第三個引數的意思