簡體   English   中英

繪制視圖時我怎么知道?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM