谁/什么调用onFinishInflate()?无论我如何用代码(在代码中)膨胀布局文件,这种方法似乎都不会触发。谁能给我一个例子或告诉我何时真正调用onFinishInflate()吗?
最佳答案
从XML扩展 View (及其 subview )后,调用View.onFinishInflate()
。具体来说,是在调用LayoutInflater.inflate(...)
期间调用onFinishInflate()
。从根开始递归执行通胀。包含 subview 的 View 可能需要知道其 subview 何时膨胀。此回调的主要用途之一是让ViewGroups
在其子级准备就绪后执行特殊操作。
假设您有一个名为View
的CustomView
子类,并且它本身不会在内部膨胀任何布局。如果您的版面中有CustomView
,即:
...
<com.company.CustomView
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
...
膨胀后,您应该会看到
onFinishInflate()
的回调。如果这是您 Activity 的主要布局,则可以在调用Activity.setContentView(int)
之后考虑到这一点。在内部,这将称为LayoutInflater.inflate(...)
。另外,如果您使用以下方法创建了
CustomView
实例:...
new CustomView(context);
...
...您不会接到
onFinishInflate()
的电话。以这种方式实例化它自然会意味着它没有子对象,因此不必像XML膨胀那样以递归的方式实例化它们。