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