在获取控件大小的时候,如果控件没有measure过.获取的大小就会是0.
设置控件的属性为invisible或者为gone时,如过经过measure过,同样也会获取到控件的大小.
visibleTextView = (TextView)findViewById(R.id.invi); goneTextView = (TextView)findViewById(R.id.gone); visibleTextView.setVisibility(View.GONE); goneTextView.setVisibility(View.INVISIBLE);
/* * 获取控件宽 */ public static int getWidth(View view) { int w = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); int h = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); view.measure(w, h); return (view.getMeasuredWidth()); } /* * 获取控件高 */ public static int getHeight(View view) { int w = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); int h = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); view.measure(w, h); return (view.getMeasuredHeight()); }