我读过的所有内容都说你不能打电话getWidth()
or getHeight()
on a View
在构造函数中,但我正在调用它们onResume()
。那时屏幕的布局不是应该已经画好了吗?
@Override
protected void onResume() {
super.onResume();
populateData();
}
private void populateData() {
LinearLayout test = (LinearLayout) findViewById(R.id.myview);
double widthpx = test.getWidth();
}
视图仍未绘制时onResume()
被调用,所以它的宽度和高度都是 0。当它的大小发生变化时,你可以使用OnGlobalLayoutListener() https://developer.android.com/reference/android/view/ViewTreeObserver.OnGlobalLayoutListener.html:
yourView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
// Removing layout listener to avoid multiple calls
if(Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
yourView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
else {
yourView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
}
populateData();
}
});
有关更多信息,请查看Android获取宽度返回0 https://stackoverflow.com/questions/3591784/android-get-width-returns-0.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)