我遇到了很多人似乎遇到过的findViewById()
返回NULL问题。我了解到,只有在View用onFinishInflate()
夸大 View 之后才可以调用findViewById()。我的问题是-什么是通货膨胀率?
在 Activity 中,我调用setContentView(R.layout.testview)
,它应该调用View构造函数,还应该调用onDraw()。这样会使 View 膨胀吗?如果是这样,为什么要有一个LayoutInflater
和一个实际上可以使 View 膨胀的函数呢?实际上,即使渲染了整个 View 并且能够与程序进行交互,在我的代码中也从未调用onInflateView()
。这告诉我,View膨胀与调用View的构造函数和onDraw()
函数有所不同。有人可以解释吗?
编辑:另外,我有一个使用onDraw()函数绘制的自定义 View 。某种程度上,从来没有为我调用过onFinishInflate()函数。这可能是什么原因?
-P
最佳答案
View 膨胀是将布局XML文件转换为对应的View
对象树的行为。您可以使用LayoutInflater
手动执行此操作,或者Android通过setContentView()
,内置Adapter
类等为您执行此操作。
setContentView()
扩展提供的布局文件。
因为有时您需要手动执行此操作,例如在复杂的ListView
中使用不同类型的行(例如, header 和明细)。