我知道在设置用户界面之前我无法过早获取尺寸。
我知道我必须在onCreate()之后得到尺寸。
但即使我做了以下事情,他们仍然总是给我0。
的onCreate():
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show_path);
...
onCreateDone = true;
}
我希望获得onSensorChanged()中的维度
// called when sensor values change
public void onSensorChanged(SensorEvent event) { // is roughly called 350 times in 1s
if (layoutSizeNotObtained && onCreateDone) { // only runs once to get the layout size
RelativeLayout relativeLayout = (RelativeLayout) findViewById(R.id.activity_show_path_relativelayout);
int layoutWidth = relativeLayout.getWidth();
int layoutHeight = relativeLayout.getHeight();
Log.d("ShowPathActivity", "layout size: " + layoutWidth + " " + layoutHeight);
Constant.setInitialX(layoutWidth / 2);
Constant.setInitialY(layoutHeight / 2);
layoutSizeNotObtained = false;
}
....
}
哪里出错?
答案 0 :(得分:2)
问题是没有保修,布局是在onSensorChanged(SensorEvent event)
通话期间完成的。视图仅在第一次布局时测量,并且在onCreate()
之后的一段时间内完成,但不是在它期间或之后。
我建议您通过this suggestion使用ViewTreeObserver。
答案 1 :(得分:0)
你是否在onCreate中调用了setContentView函数?如果没有,你需要。