Spanish [SOLUCIONADO] Como poner variables en Activity.AddView(ListViewLeft,8%x,35%x,78%x,60%x)

Alejandro Viera

Member
Licensed User
Desearía que al menos 2 de los valores de:

B4X:
Activity.AddView(ListViewLeft,8%x,35%x,78%x,60%x)

sean variables. He probado reemplazar directamente y no funciona.

B4X:
Dim alto As Int
Activity.AddView(ListViewLeft,8%x,35%x,78%x,alto)
Agradezco cualquier tipo de ayuda.
 

Alejandro Viera

Member
Licensed User
Gracias por la respuesta edgar, he conseguido orientarme y resolverlo.
Hasta la próxima
 

drgottjr

Well-Known Member
Licensed User
Longtime User
las variables referentes a la posición de un "view" en la pantalla (o sea izquierda,
arriba, ancho, alto) deberían ser o en "dip" o en un porcentaje del tamaño de la pantalla
(como ya las tienes). cuando declaras "alto" como "int", recibirás un aviso al compilar, y la
posición misma no saldrá como esperabas. aunque el tamaño de una pantalla parece que
sea en números enteros, no es exactamente así. son llamadas "unidades de pantalla".

es más; y esto es un tanto difícil de explicar, pero cuando añades un "view", la segunda y la cuarta variable
se refieren a la posición más alta en la pantalla donde quieres poner el "view" y la altura que le quieres dar.
normalmente - normalmente, repito - has de referirte a "y", no a "x" como lo haces. no hay una ley contra ello,
pero invitas un fracaso si usas "y" y "x" al azar como lo has hecho. usa "x" para la primera y la tercera variable,
y "y" para la segunda y la cuarta. el compilador sabe que "x" se refiere a medidas horizontales y "y" a cosas
verticales. si te refieres a "x" cuando debes usar "y", algo saldrá, pero probablemente no lo esperado.

quizá cabe utilizar en "disenador" incluído en la IDE.
 

Alejandro Viera

Member
Licensed User
Gracias por la aclaración drgottjr, casualmente estaba prestando atención a eso, lo de las %x lo saque de un mal ejemplo del foro...
Justo estaba investigando, cuando leo tu respuesta que me aclara mucho y te lo agradezco.
Ya que estamos te pediría que me saques de una duda.

dip seria una unidad de medida fija y %x relativa?

Muchas Gracias!
 

drgottjr

Well-Known Member
Licensed User
Longtime User
el porcentaje es relativo (x% relativo al ancho de la pantalla, y% relativo a la altura de la pantalla). no hace falta saber el tamaño de la pantalla. si pones 50%x para un view, ocupará la mitad de la pantalla (de la izquierea hasta la derecha, a partir de cierto punto, claro está). pero, ¡ojo!, si cambias la orientación del aparatito, "x" ahora se refiere a lo que era "y" debido al cambio de orientación. lo útil con el porcentaje es que te dices a tí mismo, quiero que esto ocupe la mitad. y sea lo que sea el tamaño de una pantalla, esa cosa ocupará la mitad (del ancho o de la altura, o ambos sin que tu sepas las dimensiones de la pantalla).

en cuanto a dip, de cierta forma, es fijo. pero se basa en la "densidad" de la pantalla, y esta "densidad" es diferente de acuerdo con el tamaño de la pantalla. si tienes una imagen de 640px x 320px que quieres mostrar en un imageview, cuando anades el imageview, pones activity.addview( imageview, 0%x, 0%y, 640dip, 320dip). así, la imagen se verá de la misma manera sea lo que sea el tamaño de una pantalla. si pones 640px x 320px, la imagen se verá cada vez más pequeña a medida que el tamaño de la pantalla va creciendo. aunque tu pantalla se presenta como, por ej, 1000 x 2000, no son pixels. 1000px en una pantalla grande se ven más grandes en una pantalla chica. 1000dip, en cambio, se ven de la misma manera en pantallas de diferentes dimensiones.
 
Top