[英]How do i know, when view is drawn?
我的Activity
布局具有View
,我在程序開始時就獲得了該視圖的Y位置,但是如果我將在底部方法onCreate
插入,我將獲得position value = 0
。 我怎么知道,何時繪制視圖並獲得她的Y位置。 當我單擊按鈕時,我嘗試獲得Y位置,位置變好,但是我沒有使用按鈕就獲得了位置。
我得到位置:
private float cardsStartPosition = 0;
if (cardsStartPosition == 0) {
cardsStartPosition = commonCardContainer.getY();
}
感謝您的回答。
試試這個方法。對我來說很好。
ViewTreeObserver vto = YourView.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
//do your stuff here
}
});
在您的視圖中添加一個全局布局偵聽器,當布局完成並且視圖具有尺寸時,您將收到通知。
view.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
//Here you can get your dimensions
int width = view.getWidth();
//View.removeOnGlobalLayoutListener(this);
}
});
您只提到視圖。 因此,如果這意味着它是您的自定義視圖,則可以覆蓋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的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.