¿Es posible establecer la posición absoluta de una vista en Android? (Sé que hay un AbsoluteLayout
, pero está en desuso ...)
Por ejemplo, si tengo una pantalla de 240x320px, ¿cómo podría agregar una ImageView
que tenga 20x20px de modo que su centro esté en la posición (100,100)?
view.setTranslationX()
oview.offsetLeftAndRight()
Respuestas:
Puede usar RelativeLayout. Digamos que quería un ImageView de 30x40 en la posición (50,60) dentro de su diseño. En algún lugar de tu actividad:
Más ejemplos:
Coloca dos ImageViews de 30x40 (una amarilla, una roja) en (50,60) y (80,90), respectivamente:
Coloca un ImageView amarillo de 30x40 en (50,60) y otro ImageView rojo de 30x40 <80,90> en relación con el ImageView amarillo:
fuente
ImageView
para poner, ¿no sería mejor usar unFrameLayout
?En general, puede agregar una Vista en una posición específica utilizando un FrameLayout como contenedor especificando los atributos leftMargin y topMargin .
El siguiente ejemplo colocará un ImageView de 20x20px en la posición (100,200) usando un FrameLayout como contenedor de pantalla completa:
XML
Actividad / Fragmento / Vista personalizada
Esto hará el truco porque los márgenes se pueden usar como coordenadas absolutas (X, Y) sin un diseño relativo:
fuente
Solo para agregar a la respuesta anterior de Andy Zhang, si lo desea, puede asignar parámetros a rl.addView y luego realizar cambios más adelante, de modo que:
Igualmente podría escribirse como:
Entonces, si conserva la variable params, puede cambiar el diseño de iv en cualquier momento después de agregarlo a rl.
fuente
Una forma más limpia y dinámica sin codificar ningún valor de píxel en el código.
Quería colocar un cuadro de diálogo (que inflo sobre la marcha) exactamente debajo de un botón en el que se hizo clic.
y lo resolvió de esta manera:
Sin embargo, debe asegurarse de que el diseño primario de
myView
sea una instancia deRelativeLayout
.código más completo:
De esta manera, aún puede esperar que la vista de destino se ajuste a los parámetros de diseño establecidos usando archivos XML de diseño, en lugar de codificar esos píxeles / dps en su código Java.
fuente
Coloque cualquier vista en su punto X e Y deseado
archivo de diseño
Clase Java
Hecho
fuente
En caso de que pueda ayudar a alguien, también puede probar este animador ViewPropertyAnimator de la siguiente manera
créditos a la respuesta bpr10
fuente
Pruebe el siguiente código para configurar la vista en una ubicación específica: -
fuente
Mi código para Xamarin , estoy usando FrameLayout para este propósito y el siguiente es mi código:
Fue útil para mí porque necesitaba que la propiedad de la vista se superpusiera entre sí en función de su apariencia, por ejemplo, las vistas se apilan una encima de la otra .
fuente