¿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."
- Vistas dentro de un grupo de vistas personalizado que no se representan después de un cambio de tamaño
- Android: Cómo establecer el tamaño de un diseño de forma programática
- Cambiar el tamaño de un mapa de bits
- Android configuración de fondos de pantalla ido mal
- Resize Drawable en Android
¿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
- Cambiar el tamaño de ImageView en tiempo de ejecución mediante un botón - Android
- ¿Cómo escalar / cambiar el tamaño del texto para que se ajuste a un TextView?
- Android: calidad de las imágenes redimensionadas en tiempo de ejecución
- ¿Cómo imitar la aplicación de Lollipop teléfono, con el cambio de tamaño de los elementos superiores antes de que el contenido desplazable?
- Utilidad de android nueve parche
- Cómo cambiar el tamaño de AlertDialog en la pantalla del teclado
- Android: muestra el contenido de la lista
- Problemas de calidad al cambiar el tamaño de una imagen en tiempo de ejecución
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 } });
- Android Material Design: No se pudo encontrar el estilo 'toolbarStyle' en el tema actual
- No se puede resolver nada.