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

Can we get a view height in onCreate()

我们可以在 onCreate() 中获取视图高度吗?我正在尝试使用 view.getHeight() 查找视图的高度,但它在调试器中显示为 0

ViewTreeObserver 会因不同的绘图事件而被触发。通常 OnGlobalLayoutListener 是您想要获得测量值的东西

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

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

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

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

然而,虽然目前 存在 意见,但尚未展开。只有在视图通过布局通道后,它们才会具有真正的位置和尺寸值。

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