¿Diferencia entre setTranslationX / Y y offsetLeftAndRight / offsetTopAndBottom?

Estoy trabajando con un CoordinatorLayout en el cual las posiciones de las vistas del niño se están ViewCompat.offsetLeftAndRight con las API ViewCompat.offsetLeftAndRight y ViewCompact.offsetTopAndBottom .

Cuando se agrega o se quita una vista secundaria de CoordinatorLayout , la operación de disposición restablece la posición de cada niño en la esquina superior izquierda de la pantalla, es decir, sin ningún desplazamiento.

Este artículo proporciona una solución, estableciendo un oyente de diseño en la vista secundaria y restaurar posiciones anteriores.

Me di cuenta de que utilizando las API setTranslationX y setTranslationY , este problema no se produce. Los niños mantienen su posición después de los eventos de disposición de los padres.

¿Cómo debo decidir entre estos dos conjuntos de API para organizar mis vistas en la pantalla? Soy cuidadoso de usar cualquiera sin entender sus diferencias. No entendí bien leyendo la documentación oficial.

Bastante vieja pregunta después de muchos meses tengo pocas explicaciones:

Lo primero es lo primero. El desplazamiento moverá la vista horizontalmente o verticalmente de manera similar para traducir, pero se usará para obtener resultados permanentes.

Cuando se utiliza View#offsetTopAndBottom(int offset) entonces internamente tiene estas funcionalidades:

 mTop += offset; mBottom += offset; 

Por otro lado tranlate es una variable que se calcula además de esta top / bottom / left / right posiciones y la mayoría práctico en animaciones.

Ambos métodos activarán una actualización de diseño si es necesario.

Más han sido explicadas por Nick Butcher en este bonito video: https://www.youtube.com/watch?v=86p1GPEv_fY&t=5m42s

En cuanto a CoordinatorLayout está usted por cualquier margen de ajuste de cambio a los niños? Por ejemplo, BottomSheetBehavior no funciona bien con los márgenes ya que los ignora. Creo que este podría ser el caso para usted.

  • Configuración de la fuente de texto del botón en android
  • FragmentTabHost - No se conoce ninguna pestaña null
  • Ejemplo sencillo sobre cómo usar SwipeRefreshLayout con ListView
  • Android adjustpan no funciona después de la primera vez
  • Cómo limitar la altura de la vista desplegable de Spinner en Android
  • ¿Cómo sortea Facebook Messenger un chathead? (Androide)
  • Valores de Android a diferentes tamaños de pantalla
  • ActionBar - PullToRefresh
  • Android: establece dos parámetros de gravedad mediante programación
  • ¿Por qué se mueven los botones adyacentes al cambiar el tamaño del texto en un botón
  • Margen dentro de los botones
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.