谁/什么调用onFinishInflate()?无论我如何用代码(在代码中)膨胀布局文件,这种方法似乎都不会触发。谁能给我一个例子或告诉我何时真正调用onFinishInflate()吗?

最佳答案

从XML扩展 View (及其 subview )后,调用View.onFinishInflate()。具体来说,是在调用LayoutInflater.inflate(...)期间调用onFinishInflate()。从根开始递归执行通胀。包含 subview 的 View 可能需要知道其 subview 何时膨胀。此回调的主要用途之一是让ViewGroups在其子级准备就绪后执行特殊操作。

假设您有一个名为ViewCustomView子类,并且它本身不会在内部膨胀任何布局。如果您的版面中有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膨胀那样以递归的方式实例化它们。

07-28 01:21
查看更多