Android-Daily-Interview icon indicating copy to clipboard operation
Android-Daily-Interview copied to clipboard

2019-10-30:关于LayoutInflater,它是如何通过 inflate 方法获取到具体View的?

Open Moosphan opened this issue 5 years ago • 4 comments

Ps:请从源码角度分析相关方法。

Moosphan avatar Oct 30 '19 01:10 Moosphan

系统通过LayoutInflater.from创建出布局构造器,inflate方法中,最后会掉用createViewFromTag 这里他会去判断 两个参数 factory2 和factory 如果都会空就会系统自己去创建view, 并且通过一个xml解析器,获取标签名字,然后判断是<Button还是xxx.xxx.xxView. 然后走createView 通过拼接得到全类名路径,反射创建出类。

MrShuHong avatar Oct 30 '19 04:10 MrShuHong

layoutInflater.inflate 会根据root标签判断是否是merge 是merge则解析merge标签,否则createViewFromTag创建view,优先factory2 没有就factory 来createview 优先 new 如果为空则拼接字符串来反射创建view

icytz avatar Nov 27 '19 11:11 icytz

通过XML pull解析方式获取view标签 通过反射创建view标签的view对象

mlinqirong avatar Dec 21 '21 02:12 mlinqirong

https://xujiaojie.github.io/2017/09/04/%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3LayoutInflater.inflate()/

CKTim avatar Feb 07 '23 07:02 CKTim