描述
有时我们会发现,想通过LayoutParams去为控件动态设置宽高的时候,getHeight()、getWidth()方法获取的值是0。
之所以会这样,是因为布局先在界面完成了,动态获取到界面上的值就是0。
解决办法:
将getHeight()、getWidth()方法放在post()方法里获取。
例如:
myView.post(new Runnable() {
@Override
public void run() {
int height = myView.getHeight();
int width = myView.getWidth();
}
});
这样就可以成功获取到
第二种解决办法:
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (hasFocus) {
int height = myView.getHeight();
int width = myView.getWidth();
}
}
当然还有两种方法,大家可以参照《Android开发艺术探索》,第四章View的工作原理,第190页的介绍。