我们可以在onCreate()中获得视图高度吗?

时间:2017-08-02 05:47:38

标签: android view widget

我们可以在onCreate()中获得视图高度。这里我试图使用view.getHeight()找到视图的高度,但它在debuger中显示0

3 个答案:

答案 0 :(得分:1)

您可以在创建View类时找到它的高度。换句话说,你必须在View#post()方法中计算它。

    view.post(new Runnable() {
        @Override
        public void run() {
            // Find height here
            // e.g
            // view.getHeight();
        }
    });

答案 1 :(得分:0)

ViewTreeObserver会因不同的绘图事件而被触发。通常,OnGlobalLayoutListener是您获得测量所需的内容

view.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            view.getViewTreeObserver().removeOnGlobalLayoutListener(this);
            view.getHeight(); //height is ready
        }
    });

答案 2 :(得分:0)

你似乎在问两个不同的问题。一旦布局膨胀,您的视图就会实例化。这意味着,在致电setContentView()后,您可以立即使用findViewById()检索它们并在其上调用方法(例如setText()等)。

然而,虽然此时存在视图,但它们尚未布局。只有在视图通过布局传递后,它们才会有位置和尺寸的实际值。

正如Ayush的回答所说,通过为您感兴趣的视图注册ViewTreeObserver.OnGlobalLayoutListener,可以在布局传递完成时收到通知。