onFinishInflate()永远不会被调用

use*_*321 22 android android-layout

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

ant*_*nyt 37

View.onFinishInflate()在视图(及其子元素)从XML中膨胀后调用.具体来说,就是要在通话过程中LayoutInflater.inflate(...)onFinishInflate()会被调用.从根开始递归地执行通货膨胀.包含儿童的视图可能需要知道其孩子何时完成充气.此回调的主要用途之一是在ViewGroups子进程准备好后执行特殊操作.

假设你有一个View被调用的子类CustomView,并且它不会在内部膨胀任何布局本身.如果你CustomView的布局中有某个地方,即:

...
<com.company.CustomView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />
...
Run Code Online (Sandbox Code Playgroud)

onFinishInflate()一旦它被夸大,你应该看到一个回调.如果这是您活动的主要布局,那么您可以考虑在Activity.setContentView(int)调用之后.在内部,这将调用LayoutInflater.inflate(...).

或者,如果您创建了一个实例CustomView:

...
new CustomView(context);
...
Run Code Online (Sandbox Code Playgroud)

......你不会接到电话onFinishInflate().以这种方式实例化它自然意味着它没有子节点,因此它不必等待它们以递归方式实例化,如在XML膨胀中.

  • 所以文档是错误的.如果手动夸大布局,则不会调用回调.但你仍然可以手动调用它以使其同质. (8认同)
  • 那不是真的,你可以在构造函数中调用`super.onFinishInflate`或者重写`onFinishInflate`. (2认同)