gpt4 book ai didi

android - 为什么在 onResume() 中的 View 上调用 getWidth() 返回 0?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:34:47 24 4
gpt4 key购买 nike

我读过的所有内容都说你不能在构造函数中的 View 上调用 getWidth()getHeight(),但是我在 onResume() 中调用它们。屏幕的布局不是应该已经画出来了吗?

@Override
protected void onResume() {
super.onResume();

populateData();
}

private void populateData() {
LinearLayout test = (LinearLayout) findViewById(R.id.myview);
double widthpx = test.getWidth();
}

最佳答案

调用 onResume() 时, View 仍未绘制,因此其宽度和高度为 0。您可以使用 OnGlobalLayoutListener() 在其大小发生变化时“捕获” :

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 get width returns 0 .

关于android - 为什么在 onResume() 中的 View 上调用 getWidth() 返回 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22972022/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com