Android 为什么getMeasuredWidth()返回0?

Android 为什么getMeasuredWidth()返回0?,android,android-layout,Android,Android Layout,在我的活动onCreate()方法中,我创建了一个视图,并将其宽度和高度硬编码为50。然后我调用measure方法。在此之后,我希望getMeasuredWidth()返回50。但它返回0 View v = new View(this); v.setLayoutParams(new ViewGroup.LayoutParams(50, 50)); final int spec = View.MeasureSpec.makeMeasureSpec(0, View.Meas

在我的活动
onCreate()
方法中,我创建了一个
视图
,并将其宽度和高度硬编码为50。然后我调用
measure
方法。在此之后,我希望
getMeasuredWidth()
返回50。但它返回0

    View v = new View(this);
    v.setLayoutParams(new ViewGroup.LayoutParams(50, 50));

    final int spec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
    v.measure(spec, spec);
    final int w = v.getMeasuredWidth();
    Log.e("aaa", String.valueOf(w)); // output is 0
我做错了什么?如何强制计算测量视图的大小?我不想,直到它被画出来,等等

private void measureDimension() {
    view.post(new Runnable() {
        @Override
        public void run() {
            int height = view.getMeasuredHeight();
            int width = view.getMeasuredWidth();

        }
    });
}
您可以在
onCreate
中调用此方法


您可以在
onCreate

中调用此方法,因为正如副本所解释的,这不能在onCreate或onResume期间完成。因为,这不能在onCreate或onResume期间完成,如副本所述。您可能需要再次阅读
MakeMasureSpec
的文档。您可能需要再次阅读
MakeMasureSpec