Sobes.tech
Middle

Cuéntame sobre los métodos que redibujan la vista.

sobes.tech AI

Respuesta de la IA

Métodos:

  • invalidate(): Marca la vista como "sucia", requiriendo volver a dibujarla. Programa la ejecución de onDraw() en el futuro. La redibujada ocurre en el hilo principal. Se usa si cambian las propiedades externas de la vista (color, fondo, etc.).
  • postInvalidate(): Similar a invalidate(), pero puede ser llamado desde cualquier hilo, no solo desde el principal. Seguro para usar en hilos en segundo plano.
  • requestLayout(): Marca la vista como "inválida", requiriendo recalcular su tamaño y posición. Programa la ejecución de onMeasure() y onLayout(), y luego onDraw(). Se usa si cambian las dimensiones o la posición de la vista (por ejemplo, al añadir/eliminar elementos hijos en un ViewGroup).

Comparación de métodos:

Método Hilo de llamada Recalcular layout Redibujar
invalidate() Hilo UI No
postInvalidate() Cualquier hilo No
requestLayout() Hilo UI Sí (después de layout)

Ejemplo de uso de invalidate():

// Cambiar el color de la vista y solicitar redibujo
myView.setBackgroundColor(Color.RED)
myView.invalidate()

Ejemplo de uso de requestLayout():

// Añadir un elemento hijo en LinearLayout y solicitar recalcular layout y redibujo
val newTextView = TextView(context)
linearLayout.addView(newTextView)
linearLayout.requestLayout()