我的Activity
布局有View
,我在程序开头得到Y这个视图,但是如果我要插入底部方法onCreate
,我得到位置{{ 1}}。我怎么知道,当绘制视图并获得她的Y位置时。我点击按钮时尝试获得Y位置,位置变好,但我没有使用按钮就获得了位置。
我得到了职位:
value = 0
感谢您的回答。
答案 0 :(得分:2)
尝试这种方法..对我来说很好。
ViewTreeObserver vto = YourView.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
//do your stuff here
}
});
答案 1 :(得分:1)
向您的视图添加全局布局侦听器,布局完成后您将收到通知,并且您的视图具有尺寸...
view.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
//Here you can get your dimensions
int width = view.getWidth();
//View.removeOnGlobalLayoutListener(this);
}
});
答案 2 :(得分:0)
你提到的只是View。因此,如果这意味着它是您的自定义视图,则可以覆盖onLayout()
:
@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
...;
}
通过这种方式,您可以观察视图的任何布局更改。如果您对尺寸变化也感兴趣,还可以使用onSizeChanged()
:
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
...;
}
如果不是你的自定义视图,我会选择Ketan Ahir的方式。