2012-09-10 22 views
13

Necesito saber el ancho y alto de ImageView. ¿Hay alguna forma de medirlo en fragmentos? En la actividad normal utilizo este:Mida la vista en el fragmento

@Override 
public void onWindowFocusChanged(boolean hasFocus) { 
    super.onWindowFocusChanged(hasFocus); 
    image.getWidth(); 
    image.getHeight(); 
} 

Pero, ¿dónde puedo usar image.getWidth(); y image.getHeight(); en el fragmento?

Respuesta

24

Utilice GlobalLayoutListener. Usted asigna al oyente a su ImageView en onCreateView() tal como lo hace en esa respuesta en el enlace. También es más confiable que onWindowFocusChanged() para la actividad principal, por lo que recomiendo cambiar de estrategia.

EDITAR

Ejemplo:

final View testView = findViewById(R.id.view_id); 
ViewTreeObserver vto = testView.getViewTreeObserver(); 
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { 
    @Override 
    public void onGlobalLayout() { 
    Log.d("TEST", "Height = " + testView.getHeight() + " Width = " + testView.getWidth()); 
    ViewTreeObserver obs = testView.getViewTreeObserver(); 
    obs.removeGlobalOnLayoutListener(this); 
    } 
}); 
+0

Para añadir a esta respuesta ... He intentado utilizar este fragmento para obtener el ancho y la altura de un ImageView en un fragmento mostrado por la Barra de acciones ficha de escucha . (Utilizando support.V4 api, targeting API14 +) Tuve que colocar el fragmento en el método 'onViewCreated' (?) Para obtener resultados. De hecho, en 'onCreateView' el objeto testView era nulo, no se encontró la vista, y esto provocó una excepción. – user2238983

+0

Debería poder aplicarlo a la vista que regrese en CreateView. La razón por la que devolvería null sería porque 'profileContainer' aún no existe. – DeeV

+1

¿Qué son los tipos profilePadding y profileContainer? –

Cuestiones relacionadas