gpt4 book ai didi

android - fragment 内的 View 坐标始终为空

转载 作者:行者123 更新时间:2023-11-30 03:06:15 26 4
gpt4 key购买 nike

我需要获取布局中某些 View 的坐标。我尝试这样做(在 onCreateView 内)

TextView[] tv = new TextView[3]
tv[0] = (TextView) view.findViewById(R.id.content0);
tv[1] = (TextView) view.findViewById(R.id.content1);
tv[2] = (TextView) view.findViewById(R.id.content2);
RectF[] positions = new RectF[3];

for (int i = 0; i < tv.length; i++) {
int top = tv[i].getTop();
int left = tv[i].getLeft();
int width = tv[i].getWidth();
int height = tv[i].getHeight();
positions[i] = new RectF(left, top, left + width, top + height);

}

但是如果我尝试将位置数组打印到 Logcat 中,我总是获得 0,0,0,0。怎么了?

最佳答案

正如 blackbelt 提到的,您必须等待 View 的布局才能获得维度。使用 ViewTreeObserver。

    getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
for (int i = 0; i < tv.length; i++) {
int top = tv[i].getTop();
int left = tv[i].getLeft();
int width = tv[i].getWidth();
int height = tv[i].getHeight();
positions[i] = new RectF(left, top, left + width, top + height);

}
getViewTreeObserver().removeOnGlobalLayoutListener(this);

}
});

关于android - fragment 内的 View 坐标始终为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21756223/

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