在android的oncreate方法中,直接获取view的width,height等信息会返回0,因为oncreate方法仅仅是使用LayoutInflater解析XML并将其填充到ContentView中,填充过程只包括创建view,不包括设置视图的大小。
实际上,可以使用view的post方法解决这个问题。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
view= (View) findViewById(R.id.cl1);
/**
* oncreate 的时候获得控件尺寸
*/
view.post(new Runnable() {
@Override
public void run() {
Log.e("TAG", "viewHeight:" + view.getHeight());
Log.e("TAG", "viewWidth:" + view.getWidth());
}
});
}
阅读源码可知,该方法最终通过一个Handler将该Runnable 加入到主线程消息队列中。