1. 说明
在项目开发的过程中,我们有时候需要去实例化布局文件,如果是在自定义View中,有时候需要把该自定义View的布局文件添加到该自定义View中,对于这两种情况我们一般有如下的处理方式:
1.1 实例化布局有3种方式
使用场景如下:
比如在ListView或者RecyclerView的adapter中、在给ListView添加头布局时候等等,都需要去实例化View;而且如果是在自定义View中,并且如果控件该自定义View的布局文件是组合控件,我们一般做法就是:
// 方式一
View.inflate(mContext , mLayoutId , null) ;
// 方式二
LayoutInflater.from(mContext).inflate(mLayoutId , parent) ;
// 方式三
LayoutInflater.from(mContext).inflate(mLayoutId , parent , false) ;
我们一般都是用第三种方式,我们分析源码之后就会知道,我们一般都是去用第三种的
1.2 将自定义View的布局文件添加到该自定义View中
使用场景如下:
比如我们之前写的58同城数据加载效果的实现,我们是自定义一个 LoadingView,而它的布局我们分析后它是一个组合控件,我们自己创建ui_loading_view.xml文件,然后我们就将该 布局文件动态添加到该 自定义View中, 动态添加布局文件到 自定义View中有2种实现方式:
第一种:
View loadView = inflate(getContext(),R.layout.ui_loading_view ,null);
addView(loadView) ;
第二种:
inflate(getContext(),R.layout.ui_loading_view ,this);
此处的this就表示 把ui_loading_view加载到 LoadingView中