La altura de la vista es 0 bajo ciertas condiciones al hacer la transición entre Actividades

Aquí está el context: tengo una Actividad con un layout complejo al cual quiero hacer la transición usando Transiciones relativamente complejas. El problema es que necesito posicionar una vista ( scroll_frame ) debajo de la image (no puedo usar XML), así que necesito saber su altura. Funciona bien la primera vez, sin embargo, después de cierto número de ida y vuelta entre la altura de la image de Actividades de repente es cero (almacenamiento en caching, condiciones de carrera?)

Aquí está el fragment de onCreate :

  super.onCreate(savedInstanceState) postponeEnterTransition() setContentView(R.layout.some_id) // ... non-essential stuff. Glide.with(this) .load([some resource id]) .into(object : SimpleTarget<Drawable>() { override fun onResourceReady(d: Drawable?, t: Transition<in Drawable>?) { // Prepare image. image.setImageDrawable(d) val margin = Math.max(image.measunetworkingHeight, 0) // ... non-essential stuff layoutParams.setMargins(0, margin, 0, 0) // Critical part. scroll_frame?.layoutParams = layoutParams // Start transition. startPostponedEnterTransition() } }) 

Lo que pasa es que las vistas no tienen la altura medida en onCreate.

Prueba esto:

  //Put this in onCreate imageView.post(new Runnable() { @Override public void run() { //This is called after view measurements are done. //Run your glide code here. } }); 

Espero que esto ayude.

eso se debe a que su vista aún no está configurada:

utilizar esta:

 image.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { public void onGlobalLayout() { //don't forget to remove the listener to prevent being called again by future layout events: image.getViewTreeObserver().removeOnGlobalLayoutListener(this); val margin = Math.max(image.measunetworkingHeight, 0) // ... non-essential stuff layoutParams.setMargins(0, margin, 0, 0) // Critical part. scroll_frame?.layoutParams = layoutParams // Start transition. startPostponedEnterTransition() } } 
  • Recuperar valores del file `.properties` | la propiedad lateinit no se ha inicializado
  • Enviar request a otra URL de Ktor
  • ¿Cuál es el campo de anotación de Kotlin Equivlant a Java con el tipo de comodín delimitado?
  • Vert.x. ¿Cómo crear una aplicación de JVM políglota real?
  • ¿Cómo verificar la llamada en setter en kotlin usando mockito?
  • Kotlin: ¿Cómo puedo invocar un campo lambda que tiene un tipo genérico de su class?
  • Autocompletado de IntelliJ para files de kotlin de script gradle incluidos
  • ¿Existe alguna forma más simple de express classs anónimas en Kotlin?
  • Declaración de interfaz Java vs Kotlin
  • Llamar a una function en un fragment de un buscapersonas de la actividad
  • android anko alert layout personalizado currentFocus