2012-05-02 6 views
11

Necesito acceso al ancho y la altura ya evaluados de todos los componentes en la vista Fragmento. Entonces necesito una notificación que me diga que la vista de la fase de disposición de fragmentos ya está hecha.Obtiene el ancho y la altura de los componentes en la vista de fragmento

En actividad puedo usar el método de ciclo de vida onWindowFocusChanged(boolean hasFocus), pero el fragmento no tiene este método.

La única forma que encontré es usar getView().addOnLayoutChangeListener(). Pero llama varias veces y solo la última llamada es útil para mí.

¿Existe alguna forma mejor de cómo llamar a algunos después de que el diseño se hace en la vista del fragmento?

+0

Pregunta relacionada http://stackoverflow.com/questions/14397959/capture-layout-resize-before-api-11 –

Respuesta

1

En realidad puede activar manualmente un pase de disposición; solo necesita llamar al View.measure(int,int) con las MeasureSpecs apropiadas. Por ejemplo, si el fragmento se va a unir a una vista padre parentView, y que desea que tenga el mismo tamaño, que haría esto:

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

más sobre cómo la medida/diseño pasa trabajo: http://developer.android.com/reference/android/view/View.html#Layout

+0

Pero mida solo el tamaño recomendado, se conoce el tamaño real después del pase de disposición. Y no lo necesito ejecutarlo manualmente, porque Android lo ejecuta nuevamente (creo). – ATom

+0

En realidad no es solo un tamaño recomendado. El pase de la medida se utiliza para indicarle a la vista que "esto es lo que obtienes, úsalo como quieras". Por ejemplo, en un ListView, la restricción para el ancho es EXACTAMENTE, y para la altura es NO ESPECIFICADA. Tiene razón en que el tamaño medido no siempre es el mismo que el tamaño trazado, pero casi siempre lo es. No estoy muy seguro de lo que estás tratando de hacer? –

+0

Solo necesito recibir una notificación después de que el fragmento y su contenido ya hayan finalizado la medición y la aprobación del diseño y todas las dimensiones sean definitivas. – ATom

Cuestiones relacionadas