Получить ширину и высоту компонентов в представлении Фрагмент

Мне нужен доступ к уже оцененной ширине и высоте всего компонента в представлении фрагмента. Поэтому мне нужно какое-то уведомление, которое скажет мне, что представление фаз макета фрагмента уже сделано.

В деятельности я могу использовать onWindowFocusChanged(boolean hasFocus) метод жизненного цикла, но фрагмент не имеет этого метода.

Единственным способом, который я нашел, является использование getView().addOnLayoutChangeListener() . Но он вызывает несколько раз, и только последний вызов полезен для меня.

Существует какой-либо лучший способ, как вызвать несколько после того, как макет сделан в виде фрагмента?

Фактически вы можете инициировать View.measure(int,int) макета вручную – вам просто нужно вызвать View.measure(int,int) с помощью соответствующих MeasureSpec. Например, если фрагмент должен быть привязан к родительскому представлению parentView, и вы хотите, чтобы он имел тот же размер, вы бы сделали следующее:

 View fragmentView = fragment.getView(); fragmentView.measure(MeasureSpec.makeMeasureSpec(parentView.getMeasuredWidth(), MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(parentView.getMeasuredHeight(), MeasureSpec.EXACTLY)); 

Подробнее о том, как проходит действие меры / макета: http://developer.android.com/reference/android/view/View.html#Layout