getWidth()得到是某个view的实际尺寸。
getMeasuredWidth()是得到某view想要在parent view里面占的大小。
getWidth()在OnCreat()的时候得到的是0。原因: 当一个view对象创建时,android并不知道其大小,所以getWidth()和getHeight()返回的结果是0,真正大小是在计算布局时才会计算,但是在onDraw()却能取得长宽。
那怎么在onCreat 的时候得到呢?
方法一:
width = activity.getWindowManager().getDefaultDisplay().getWidth();
height = activity.getWindowManager().getDefaultDisplay().getHeight();
方式二:
LinearLayout llTop = (LinearLayout) findViewById(R.id.llTop);
int w = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); // View.MeasureSpec.UNSPECIFIED的值,表示不限定
int h = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
llTop.measure(w, h); // 测量
int topWidth = llTop.getMeasuredWidth();
int topHeight = llTop.getMeasuredHeight();
getMeasuredWidth()必须在parent view或者它自己调用measure()函数之后才能得到. measure函数就是计算该函数需要占用的空间大小。
ViewTreeObserver vto = ssidtext.getViewTreeObserver();
vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
public boolean onPreDraw() {
int height = ssidtext.getMeasuredHeight();
int width = ssidtext.getMeasuredWidth();
return true;
}
});
getMeasuredWidth()是得到某view想要在parent view里面占的大小。
getWidth()在OnCreat()的时候得到的是0。原因: 当一个view对象创建时,android并不知道其大小,所以getWidth()和getHeight()返回的结果是0,真正大小是在计算布局时才会计算,但是在onDraw()却能取得长宽。
那怎么在onCreat 的时候得到呢?
方法一:
width = activity.getWindowManager().getDefaultDisplay().getWidth();
height = activity.getWindowManager().getDefaultDisplay().getHeight();
方式二:
LinearLayout llTop = (LinearLayout) findViewById(R.id.llTop);
int w = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); // View.MeasureSpec.UNSPECIFIED的值,表示不限定
int h = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
llTop.measure(w, h); // 测量
int topWidth = llTop.getMeasuredWidth();
int topHeight = llTop.getMeasuredHeight();
getMeasuredWidth()必须在parent view或者它自己调用measure()函数之后才能得到. measure函数就是计算该函数需要占用的空间大小。
ViewTreeObserver vto = ssidtext.getViewTreeObserver();
vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
public boolean onPreDraw() {
int height = ssidtext.getMeasuredHeight();
int width = ssidtext.getMeasuredWidth();
return true;
}
});
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int screenWidth = metrics.widthPixels; // 屏幕宽度
int screenHeight = metrics.heightPixels; // 屏幕高度
Rect rect = new Rect();
Window window = DetailSchemaActivity.this.getWindow();
window.getDecorView().getWindowVisibleDisplayFrame(rect);
int statusBarHeight = rect.top;
int contentViewTop = window.findViewById(Window.ID_ANDROID_CONTENT).getTop();
int titleBarHeight = contentViewTop - statusBarHeight;// statusBarHeight为状态栏高度,titleBarHeight为标题栏高度