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() } } 
  • ¿Cómo dividir una cadena y plantar los delimitadores entre las partes divididas en Kotlin?
  • Simplificado agregar y replace fragments en Kotlin
  • Parcela: incapaz de calcular el valor
  • Método de llamada de la class Kotlin
  • El parámetro de tipo Force es invariante en el sitio de uso cuando es covariante en el sitio de statement
  • Enlace de datos: el campo Observable con valor lambda no comstack
  • java https: // localhost (SSL) - posible sin instalar certs en el cliente?
  • La variable de vista de Kotlin es inesperadamente nula en el método Activity onCreate
  • No se puede establecer OnItemClickListener for spinner en Android
  • Obtener una instancia de subcomponente en una actividad
  • ¿Por qué Kotlin necesita una syntax de reference de function?