getViewTreeObserverのAndrewsビュー()。 AddOnGlobalLayoutListener()



Andrews View Getviewtreeobserver



View.getWidthとView.getHeightのoncreateで、ビューの高さと幅を取得しません。

onResumeコールバック後に完了するコンポーネントのレイアウトを表示するためです。



必須のgetViewTreeObserver()。 AddOnGlobalLayoutListener()を使用して、幅または高さを取得します。

これは、道を見ることができる幅と高さの1つです。



OnGlobalLayoutListenerはViewTreeObserver内部クラスであり、変更のツリービューのレイアウトがViewTreeObserverリッスンすることができます。これは、ツリーのビューが登録されたオブザーバー(オブザーバー)をリッスンし、ツリービューが変更されたときに通知されるグローバルイベントです。

ViewTreeObserverは直接インスタンス化されませんが、()はgetViewTreeObserverによって取得されます。

// addition OnGlobalLayoutListener, ViewTreeObserver inner classes there are the following: interface ViewTreeObserver.OnGlobalFocusChangeListener // callback function when the focus state in a tree view is changed, to be called the interface class interface ViewTreeObserver.OnGlobalLayoutListener // callback function when the visual state change occurs or global placement in a tree view in the tree view of a view is changed, to be called the interface class interface ViewTreeObserver.OnPreDrawListener // callback function when a tree view will be drawn, to be called the interface class interface ViewTreeObserver.OnScrollChangedListener // callback function when a tree view of some components scrolled, to be called the interface class interface ViewTreeObserver.OnTouchModeChangeListener

タッチモードが変更のツリービューである場合、OnGlobalLayoutListenerを使用して実際の高さのビューを取得できます。



int mHeaderViewHeight mHeaderView.getViewTreeObserver().addOnGlobalLayoutListener( new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { mHeaderViewHeight = mHeaderView.getHeight() // Remove observer getViewTreeObserver().removeGlobalOnLayoutListener(this) } })

注意:

OnGlobalLayoutListenerは複数回トリガーされる可能性があるため、高度にトリガーされた後、OnGlobalLayoutListenerが取り消されます。