View.inflate(Context context, @LayoutRes int resource, ViewGroup root)
LayoutInflater.from(Context context).inflate(@LayoutRes int resource, @Nullable ViewGroup root)
LayoutInflater.from(Context context).inflate(XmlPullParser parser, @Nullable ViewGroup root)
由于Android的特殊机制,assets和raw目录下的文件不会被编译(即不能通过R.xx.id访问),所以我们只能采用LayoutInflater.from(Context context).inflate(XmlPullParser parser, @Nullable ViewGroup root)方法来访问其中的xml布局。
所以我们接着来看如何获取到XmlPullParset对象,通过context.assets可获取到AssetManager对象,而AssetManager则可以通过openXmlResourceParser(@NonNull String fileName)获取到XmlResourceParser对象。
所以通过上面的分析我们可得出下列代码:
fun getView(ctx: Context, filename: String): View? {
return LayoutInflater.from(ctx).inflate(am.openXmlResourceParser(filename), null)
}
1.当我们兴高采烈的写好demo,实机运行时,会遇到第一个坑:
程序抛出了FileNotFoundException的异常
java.io