Capture Layout resize before API 11

Estoy dinámicamente creando una tabla, hecha de vistas que se establecen dinámicamente en un diseño relativo. En mi onCreate llamo al constructor de mi clase Board que crea todo:

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_layout); RelativeLayout boardLayout = (RelativeLayout) findViewById(R.id.layoutBoard); board = new Board(this, boardLayout); } 

En mi clase Board establezco las reglas para la capa y también necesito establecer el tamaño de las vistas que boardLayout.getWidth() , y las calculo a partir de los valores de boardLayout.getWidth() y boardLayout.getHeight()

Ahora el problema es que todo el dibujo real en la pantalla se realiza sólo después del final del método onCreate, por lo que en el momento de la creación, el ancho y la altura de la capa son cero.

Así que decidí establecer el tamaño con:

  boardLayout.addOnLayoutChangeListener(new RelativeLayout.OnLayoutChangeListener() { @Override public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) { board.setParentLayoutSize(left, top, right, bottom); } }); 

Desafortunadamente este método está disponible solamente de API 11 y debo pegarme a API 10 como máximo. ¿Cómo podría realizar esto? ¿Hay una manera de escuchar los cambios de diseño sin usar este método?

¡Gracias!

La solución más elegante es extender la clase RelativeLayout, entonces solo puedes anular onSizeChanged:

 protected void onSizeChanged (int w, int h, int oldw, int oldh) 

Si necesita conocer el tamaño justo después de inflar puede intentar medir la vista manualmente: así que mide la llamada (…) que el diseño (…) y entonces getMeasuredWidth () / getMeasuredHeight debe devolver el tamaño correcto. Pero esto es más complicado, no lo use si no está seguro de cómo funciona.

Después de horas que no pude encontrar nada, escribí este mensaje e inmediatamente descubrí esto: ¿Cómo recuperar las dimensiones de una vista?

  • Cómo configurar el control focusable de Android ActionBar mediante programación
  • Uso de RelativeLayout dentro de ScrollView no se produce en desplazamiento
  • Posición RelativeLayout por debajo de RelativeLayout
  • Cómo envolver contenidos como imagen, botón dentro de los diseños de Android?
  • Carpeta extraíble android para pantallas grandes
  • Android: inflar un diseño y escribirlo en PDF produce un PDF en blanco
  • ¿Cómo hacer que el estilo personalizado de tema de ventanaBackground funcione en todos los dispositivos Android?
  • Layout-land no picking diseño del paisaje xml
  • Escuchar en una vista si la vista cambia su posición XY
  • Android: El editor XML predeterminado ya no se abre
  • ¿Cómo crear una superposición que bloquea los eventos de toque a la interfaz de usuario debajo de él?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.