Android 在所有布局方法之后调用哪个活动方法?

Android 在所有布局方法之后调用哪个活动方法?,android,android-layout,Android,Android Layout,我需要在活动中执行一些操作调用所有布局方法后,所有视图都已就位,并且活动已准备好显示 哪种方法可以做到这一点?没有神奇的方法可以解决这个问题。建议将处理程序添加到活动类中,并从包含要运行的代码的onCreate()向其添加post()aRunnable 如果仍然太早,您可以使用postdayed()来代替。如果您试图获取视图或其他内容的宽度。这应该行得通 将此添加到活动的onCreate中 ViewTreeObserver vto = layout.getViewTreeObserver();

我需要在
活动中执行一些操作
调用所有布局方法后,所有
视图
都已就位,并且
活动
已准备好显示


哪种方法可以做到这一点?

没有神奇的方法可以解决这个问题。建议将
处理程序添加到活动类中,并从包含要运行的代码的
onCreate()
向其添加
post()
a
Runnable


如果仍然太早,您可以使用
postdayed()
来代替。

如果您试图获取视图或其他内容的宽度。这应该行得通

将此添加到活动的onCreate中

ViewTreeObserver vto = layout.getViewTreeObserver(); 
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { 
    @Override 
    public void onGlobalLayout() { 
        // Put your code here. 

        layout.getViewTreeObserver().removeOnGlobalLayoutListener(this); 
    } 
}); 

好吧,这是可行的,但是对于post(),它不能保证在所有其他操作之后调用,而对于postDelayed,有一个神奇的数字,我认为活动将能够在其上完成充气。您可能需要重新考虑您正在尝试做的事情。如果您真的只需要在调用layout()之后运行,请对顶级视图进行子类化,并覆盖onLayout()。(请记住先调用super.onLayout())。实际上,这是一种从ActionBar中删除选项卡的黑客行为。IMHO您的评论覆盖顶级视图上的onLayout比您的原始答案安全得多,它可能在99.9%的时间内运行良好,但在未来的用户设备上失败,因为无法保证它运行得足够晚!我不敢相信在你回答之前我从未注意到ViewTreeObserver API。这太完美了!:)我从很久以前别人的回答中得到了这个答案同样的错误,当它被调用时,操作栏还没有膨胀。@blessenm你能告诉我为什么你没有像这样删除listner吗vto。RemoveGlobalOnlayOutliner(这个),我看到很多帖子他们正在做和你一样的事,但是我不明白为什么他们的一些逻辑在背后@blessenm不blessenm我尝试了“vto.removeGlobalOnlayOutliner(this)”并得到了异常,因为文档说它不能保证“ViewTreeObserver”的引用会长久存在,这就是为什么我们必须再次获得视图的“ViewTreeObserver”并删除侦听器