Android 在我的活动中衡量所有视图时,我如何抓住这一时刻?

Android 在我的活动中衡量所有视图时,我如何抓住这一时刻?,android,android-activity,Android,Android Activity,我需要知道我的活动中某些视图的正确宽度、高度和位置在onResume之后尽快。我可以将此代码放在我的活动中的何处?奇怪的是,我在创建答案的同一天就可以重用它: 您可以在onResume()中的视图树上设置一个全局布局侦听器,并在其中进行欺骗 final ViewTreeObserver vto = myView.getViewTreeObserver(); vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { publ

我需要知道我的
活动中某些视图的正确宽度、高度和位置
onResume
之后尽快。我可以将此代码放在我的活动中的何处?

奇怪的是,我在创建答案的同一天就可以重用它:

您可以在
onResume()
中的视图树上设置一个全局布局侦听器,并在其中进行欺骗

final ViewTreeObserver vto = myView.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {

    public void onGlobalLayout() {
        // do layout tweaking based on measurements

        // remove the listener... or we'll be doing this a lot.
        vto.removeGlobalOnLayoutListener(this);
    }
}

奇怪的是,在我做出答案的同一天,我又重新使用了一个答案:

您可以在
onResume()
中的视图树上设置一个全局布局侦听器,并在其中进行欺骗

final ViewTreeObserver vto = myView.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {

    public void onGlobalLayout() {
        // do layout tweaking based on measurements

        // remove the listener... or we'll be doing this a lot.
        vto.removeGlobalOnLayoutListener(this);
    }
}

我必须使用
vto.isAlive()
并再次调用
getViewTreeObserver()
,否则它会因
java.lang.IllegalStateException而崩溃:此ViewTreeObserver未激活
。不管怎样,谢谢。啊!很好的发现,很高兴它有帮助。祝你好运。@AndreyNovikov你能告诉我你到底是怎么做的吗?@Danpe,看看我的答案:我必须使用
vto.isAlive()
并再次调用
getViewTreeObserver()
,否则它会在
java.lang.IllegalStateException:这个ViewTreeObserver不是活动的
。不管怎样,谢谢。啊!很好的发现,很高兴它有帮助。祝你好运。@AndreyNovikov你能证明你到底是怎么做到的吗?@Danpe,看看我的答案: