Comportamiento de updateViewLayout extraño
Tengo una vista (personalizada) añadida con getWindowManager().addView()
y más tarde estoy modificando los LayoutParameters
de ella (cambiando x
& width
) y llamar a getWindowManager().updateViewLayout()
. Esto funciona, pero estoy recibiendo dos refrescos de pantalla, primero sólo se mueve la cosa entera de acuerdo con el nuevo x
y más tarde se escala de acuerdo con el nuevo ancho. ¿Alguna idea acerca de por qué está sucediendo esto aunque sólo llamo a updateViewLayout
sólo una vez con los nuevos parámetros de diseño?
FYI: el método onDraw
de la vista dibujada a medida mencionada aquí también es llamado sólo una vez por el sistema durante este proceso.
- Android: Cómo configurar las variables dimen de XML mediante programación
- ¿Cómo configurar el android para mostrar la orientación vertical?
- Búsqueda de diseños por ID
- ¿Cuál es el truco con 0dip layout_height o layouth_width?
- Combo preferencia en Android
- Cómo cambiar los dispositivos predeterminados de vista previa de diseño en Android Studio
- ¿Cómo hacer esto más eficiente?
- Android 3.2 mismo diseño para todas las pantallas
- Recursos de referencia en javadoc
- Colocar los botones OK / Cancel para que imiten el diseño en diálogos
- Android, programación orientada a objetos vs diseñar para el funcionamiento
- Cómo puedo atenuar la vista de fondo cuando se muestra una vista personalizada
- Android - View.requestLayout no funciona en OnLayoutChangeListener
Tratar:
runOnUiThread(new Runnable() { public void run() { view.updateViewLayout(); } });
http://developer.android.com/reference/android/app/Activity.html#runOnUiThread(java.lang.Runnable)
Si no funciona, compruebe lo siguiente:
¿Cómo mover una vista en Android?
¿Estás haciendo esto?
intenta hacerlo :
view.post(new Runnable() { public void run() { view.updateViewLayout(); } });
updateViewLayout
es un método que puede ser invalidado por su ViewGroup
personalizado y en este método ViewGroup
puede implementar todo lo que quiere cambiar.
¿Tal vez haces algo mal en ella?
O también tal vez tienes que implementar este código en UiThread
como en otras preguntas. – En este caso, cuando cambia sus parámetros de forma asíncrona con la primera llamada de la función de dibujo por sistema, su método tal vez pueda cambiar sólo un parámetro y en segunda llamada el segundo parámetro también se cambiará.
- La huella dactilar que ha especificado ya está siendo utilizada por otro cliente Android OAuth2
- Google google mapv2 icono de la URL