onFinishInflate()永远不会被调用

时间:2012-03-10 22:52:56

标签: android android-layout

谁/什么叫onFinishInflate()?无论我如何夸大我的布局文件(在代码中),这种方法似乎永远不会被触发。任何人都可以给我一个例子或告诉我什么时候onFinishInflate()实际上被调用?

1 个答案:

答案 0 :(得分:37)

在视图(及其子代)从XML中膨胀后调用

View.onFinishInflate()。具体而言,在致电LayoutInflater.inflate(...)期间,将调用onFinishInflate()。从根开始递归地执行通货膨胀。包含儿童的视图可能需要知道其孩子何时完成充气。此回调的主要用途之一是ViewGroups在孩子准备就绪后执行特殊操作。

假设您有一个名为View的{​​{1}}子类,并且它本身不会对任何布局进行内部膨胀。如果您的布局中某处有CustomView,即:

CustomView

一旦充气,您应该会看到... <com.company.CustomView android:layout_width="wrap_content" android:layout_height="wrap_content" /> ... 的回调。如果这是您活动的主要布局,那么您可以在调用onFinishInflate()后考虑这个问题。在内部,这将调用Activity.setContentView(int)

或者,如果您使用:

创建了LayoutInflater.inflate(...)的实例
CustomView

...你不会接到... new CustomView(context); ... 的电话。以这种方式实例化它自然意味着它没有子节点,因此它不必等待它们以递归方式实例化,就像XML通胀一样。