片段内的视图坐标始终为空
Posted
技术标签:
【中文标题】片段内的视图坐标始终为空【英文标题】:View coordinates inside fragment are always null 【发布时间】:2014-02-13 13:54:09 【问题描述】:我需要在我的布局中获取某些视图的坐标。我尝试过这样做(在 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。怎么了?
【问题讨论】:
您要查找的信息在运行时可用,但仅在绘制视图时可用。 【参考方案1】:正如黑带所提到的,您必须等待视图的布局才能获得尺寸。 使用 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);
);
【讨论】:
以上是关于片段内的视图坐标始终为空的主要内容,如果未能解决你的问题,请参考以下文章