在activity生命周期方法:onCreate(),onStart(),onResume()中调用View.getWidth()和View.getHeight()方法获取View的高度是不可行的,因为此时布局没有加载是不可见状态。

创新互联建站专注于宜昌企业网站建设,响应式网站,商城系统网站开发。宜昌网站建设公司,为宜昌等地区提供建站服务。全流程按需求定制开发,专业设计,全程项目跟踪,创新互联建站专业和态度为您提供的服务
还有当view的可见状态为:GONE,时获取的宽高也是0;
2. 解决办法:
(1)直接测量:
private void first() {
int width = View.MeasureSpec.makeMeasureSpec(0,
View.MeasureSpec.UNSPECIFIED);
int height = View.MeasureSpec.makeMeasureSpec(0,
View.MeasureSpec.UNSPECIFIED);
textView.measure(width, height);
int height1 = textView.getMeasuredHeight();
int width3 = textView.getMeasuredWidth();
System.out.println("first: 宽: " + width3 + " 高: " + height1);
}(2)添加绘制view之前的监听
private void second() {
ViewTreeObserver vto = textView.getViewTreeObserver();
vto.addOnPreDrawListener(new
ViewTreeObserver.OnPreDrawListener() {
public boolean onPreDraw() {
int height = textView.getMeasuredHeight();
int width = textView.getMeasuredWidth();
System.out.println("second: 宽:" + width + " 高: " + height);
return true;
}
});
}(3)添加整体布局监听
private void third() {
ViewTreeObserver vto = textView.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
public void onGlobalLayout() {
textView.getViewTreeObserver().removeGlobalOnLayoutListener(
this);
int height = textView.getMeasuredHeight();
int width = textView.getMeasuredWidth();
System.out.println("third: 宽:" + width + " 高: " + height);
}
});
}