Android 我如何知道何时绘制视图?

Android 我如何知道何时绘制视图?,android,view,Android,View,我的活动布局有视图,我在程序开始时得到了该视图的Y位置,但是如果我要在底部方法onCreate中插入,我得到了位置值=0。我怎么知道,当视图被绘制出来,并得到她的Y位置。当我点击按钮时,我尝试获得Y位置,位置得到良好,但我没有使用按钮获得位置 我得到一个职位: private float cardsStartPosition = 0; if (cardsStartPosition == 0) { cardsStartPosition = commonCardContainer.getY(

我的
活动
布局有
视图
,我在程序开始时得到了该视图的Y位置,但是如果我要在底部方法
onCreate
中插入,我得到了位置
值=0
。我怎么知道,当视图被绘制出来,并得到她的Y位置。当我点击按钮时,我尝试获得Y位置,位置得到良好,但我没有使用按钮获得位置

我得到一个职位:

private float cardsStartPosition = 0;
if (cardsStartPosition == 0) {
    cardsStartPosition = commonCardContainer.getY();
}

感谢您的回答。

将全局布局侦听器添加到您的视图中,当布局完成且视图具有维度时,您将收到通知

    view.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {

        @Override
        public void onGlobalLayout() {

            //Here you can get your dimensions
            int width = view.getWidth();
            //View.removeOnGlobalLayoutListener(this);

        }

    });

将全局布局侦听器添加到视图中,当布局完成且视图具有维度时,您将收到通知

    view.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {

        @Override
        public void onGlobalLayout() {

            //Here you can get your dimensions
            int width = view.getWidth();
            //View.removeOnGlobalLayoutListener(this);

        }

    });

将全局布局侦听器添加到视图中,当布局完成且视图具有维度时,您将收到通知

    view.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {

        @Override
        public void onGlobalLayout() {

            //Here you can get your dimensions
            int width = view.getWidth();
            //View.removeOnGlobalLayoutListener(this);

        }

    });

将全局布局侦听器添加到视图中,当布局完成且视图具有维度时,您将收到通知

    view.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {

        @Override
        public void onGlobalLayout() {

            //Here you can get your dimensions
            int width = view.getWidth();
            //View.removeOnGlobalLayoutListener(this);

        }

    });

试试这个方法,我觉得很好

ViewTreeObserver vto = YourView.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {

        //do your stuff here                    

        }
    });

试试这个方法,我觉得很好

ViewTreeObserver vto = YourView.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {

        //do your stuff here                    

        }
    });

试试这个方法,我觉得很好

ViewTreeObserver vto = YourView.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {

        //do your stuff here                    

        }
    });

试试这个方法,我觉得很好

ViewTreeObserver vto = YourView.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {

        //do your stuff here                    

        }
    });

你提到的只是风景。因此,如果这意味着它是您的自定义视图,您可以覆盖
onLayout()

这样,您可以观察视图的任何布局更改。如果您还对大小更改感兴趣,还有
onSizeChanged()


若这不是你们的自定义视图,我会选择Ketan Ahir的方式。

你们提到的只是视图。因此,如果这意味着它是您的自定义视图,您可以覆盖
onLayout()

这样,您可以观察视图的任何布局更改。如果您还对大小更改感兴趣,还有
onSizeChanged()


若这不是你们的自定义视图,我会选择Ketan Ahir的方式。

你们提到的只是视图。因此,如果这意味着它是您的自定义视图,您可以覆盖
onLayout()

这样,您可以观察视图的任何布局更改。如果您还对大小更改感兴趣,还有
onSizeChanged()


若这不是你们的自定义视图,我会选择Ketan Ahir的方式。

你们提到的只是视图。因此,如果这意味着它是您的自定义视图,您可以覆盖
onLayout()

这样,您可以观察视图的任何布局更改。如果您还对大小更改感兴趣,还有
onSizeChanged()

若这不是你们的习惯观点,我会按照凯坦·阿希尔的方式去做