¿Cómo detectar un cambio de tamaño de diseño?

Dianne Hackborn mencionó en un par de hilos que puede detectar cuando un diseño se ha cambiado de tamaño, por ejemplo, cuando el teclado virtual se abre o se cierra. Tal hilo es éste … http://groups.google.com/group/android-developers/browse_thread/thread/d318901586313204/2b2c2c7d4bb04e1b

Sin embargo, no entendí su respuesta: "Por su jerarquía de vista que se cambia el tamaño con todos los trazos correspondientes de diseño y devoluciones de llamada."

¿Alguien tiene una descripción más detallada o algunos ejemplos de cómo detectar esto? ¿En qué devoluciones puedo enlazar para detectar esto?

Gracias

Anula onSizeChanged en tu vista !

Una forma es Ver. AddOnLayoutChangeListener . No es necesario subclasificar la vista en este caso. Pero necesitas el nivel 11 de la API. Y el cálculo correcto del tamaño de los límites (sin documentar en la API) puede ser a veces una trampa. He aquí un ejemplo correcto:

public void onLayoutChange( View v, int left, int top, int right, int bottom, int leftWas, int topWas, int rightWas, int bottomWas ) { int widthWas = rightWas - leftWas; // right exclusive, left inclusive if( v.getWidth() != widthWas ) { // width has changed } int heightWas = bottomWas - topWas; // bottom exclusive, top inclusive if( v.getHeight() != heightWas ) { // height has changed } } 

Otra forma (como dacwe respuestas) es subclase su vista y sobreescribir onSizeChanged .

Mi solución es agregar una vista pequeña tonta invisible al final de la disposición / fragmento (o añadirlo como fondo), así cualquier cambio en el tamaño de la disposición activará el acontecimiento del cambio de la disposición para esa opinión que podría ser cogido para arriba Por OnLayoutChangeListener:

Ejemplo de adición de la vista muda al final del diseño:

  <View android:id="@+id/theDumbViewId" android:layout_width="1dp" android:layout_height="1dp" /> 

Escucha el evento:

  View dumbView = mainView.findViewById(R.id.theDumbViewId); dumbView.addOnLayoutChangeListener(new OnLayoutChangeListener() { @Override public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) { // Your code about size changed } }); 
  • Escala de texto en una vista para que se ajuste?
  • Cómo cambiar el tamaño de una vista personalizada mediante programación?
  • Visualización de una imagen más grande que la pantalla del dispositivo
  • ¿Cómo puedo cambiar el tamaño de una imagen antes de mostrarla en una vista con Android Universal Image Loader?
  • Cambiar el tamaño de IMAGEVIEW en la escala de la imagen android
  • ¿Cómo puedo cambiar el tamaño de imageButton?
  • ImageButtons Tamaño y ubicación no funcionan en Eclipse
  • Animar la vista de redimensionamiento en el diseño del material
  • ¿Puede WebView de Android redimensionar automáticamente imágenes enormes?
  • Evite varios juegos de dibujos (hdpi / mdpi / ldpi)
  • Anchura máxima y altura para ImageView en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.