View.onFinishInflate()
вызывается после раздувания представления (и его дочерних элементов) из XML. В частности, именно во время вызова LayoutInflater.inflate(...)
будет вызываться onFinishInflate()
. Инфляция выполняется рекурсивно, начиная с корня. Представление, содержащее детей, возможно, должно знать, когда его дети закончили раздувать. Одним из основных применений этого обратного вызова является выполнение ViewGroups
специальных действий, когда его дочерние элементы готовы.
Давайте предположим, что у вас есть подкласс View
с именем 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);
...
... вам не позвонит onFinishInflate()
. Его создание таким образом, естественно, будет означать, что у него нет детей, и, следовательно, ему не нужно ждать, пока они будут созданы рекурсивно, как в XML-инфляции.