也问:如何获得控件大小(高度、宽度等)尺寸信息?
在Activity的OnCreate()中,用tv.getWidth()什么的得到的都是0,网上查来查去,大致上说应该是时机不对,onCreate()太早。请问应该在什么地方、什么时候查?
------解决方案--------------------
在onDraw里边肯定,另外在 View.onMeasure、onLayout、或 onSizeChanged,记得调用 super.onXxxx,然后再检查尺寸是否>0了,这些应该也是可以的,你自己测试下看
------解决方案--------------------
获取组件的宽高度为0,是因为组件还没用被正式使用,只有在代码中使用一次以后才能正确获得组件的宽高
------解决方案--------------------
试了一下,在前面几个周期函数里面都获取不到,
然后在事件里面可以获取到,不知道是何缘故,还需进一步探讨:
- Java code
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); text = (TextView) findViewById(R.id.text); btn = (Button) findViewById(R.id.btn); btn.setOnClickListener(new Button.OnClickListener(){ @Override public void onClick(View v) { int width = text.getWidth(); int height = text.getHeight(); Log.i("Log: ", "----------->"+width + " | " + height); } }); }
------解决方案--------------------
来了,看看
------解决方案--------------------
- Java code
int w = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED); int h = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED); ssidtext.measure(w, h); int width =ssidtext.getMeasuredWidth(); int height =ssidtext.getMeasuredHeight();