PDA

Ver la Versión Completa : [ SOLUCIONADO ] Problema con visualización de elementos dinámicamente


KrLx_roller
04/07/12, 11:43:40
Buenas!

He hecho una aplicación la cual usa una API en JSON. El usuario puede poner a construir varias cosas y éstas se van añadiendo al JSON en forma de una cola de producción. Lo que yo hago es obtener dicho archivo y parsearlo mediante la librería GSON.

Una vez hecho esto, creo dinámicamente X elementos (los que contiene el JSON) con la información de cada uno.

Esto funciona perfectamente en todos los móviles que he probado, excepto en el maldito Galaxy SIII... Sobrepone todos los elementos y anula ciertas funciones.

He emulado la versión 4.0.3 (ya que la 4.0.4 no está) con la resolución y tamaño del Galaxy y se ve perfecto, pero los usuarios me reportan que en el terminal real se ve fatal.

Os pongo una captura de como se le ve al usuario y como se debería ver:

Se debería ver así: http://img213.imageshack.us/img213/4430/sinttulorhl.png

Se ve así: http://img696.imageshack.us/img696/8181/visiongeneral.jpg

Qué puede ser? Debería funcionar perfectamente. Lo mismo pasa con otra pantalla que tiene exactamente el mismo funcionamiento, aunque en esa ya no se ve nada...

Un saludo y gracias!

mocelet
04/07/12, 11:55:47
Buenas, parece un problema de layout. ¿En el emulador, además de la resolución has puesto explícitamente que es un dispositivo xhdpi? (lo del tamaño en pulgadas da igual, eso es para verlo a escala real o no, no afecta a los dpi de la máquina).

EDIT: Lo cierto es que después de abrir el cuadro de configuración, no me queda claro qué hay que hacer exactamente para conseguir que el emulador trabaja en xhdpi, igual con lo que has hecho vale, ¿podrías confirmarlo?

KrLx_roller
04/07/12, 12:59:11
Creo que lo he encontrado. Al editar el AVD, la resolución que tenia puesta es de 720x1280. En Hardware, en la propiedad 'Abstracted LDC density' tengo como valor '240'. ¿Puede ser que el del galaxy sea 320? He hecho clic encima del valor y me permite cambiarlo a 320.

Supongo que será eso. Lo pruebo y te comento.

Gracias! :D

EDIT: Prefecto! Era eso! Ahora sólo falta averiguar cómo solucionarlo jejej. Aprovechando el hilo, quiero hacer una pregunta. En los XML, cuando se quiere dar un tamaño a los elementos o un padding o margin, se usa dp ó dip de modo que en todas las pantallas se ve una misma proporción. Pero yo, al crear elementos dinámicamente, al atribuir a un layout un layoutParams.setMargins(); éstos se deben establecer en píxeles. Lo que hago para establecer los píxeles en base a los dp uso lo siguiente:

px = (int) (20 * scale + 0.5f);

Lo que pasa es que al variar entre pantallas, la distancia establecida con 'px' varía. Qué es lo que puedo usar para que se vea como en el XML?

mocelet
06/07/12, 10:51:44
EDIT: Prefecto! Era eso! Ahora sólo falta averiguar cómo solucionarlo jejej. Aprovechando el hilo, quiero hacer una pregunta. En los XML, cuando se quiere dar un tamaño a los elementos o un padding o margin, se usa dp ó dip de modo que en todas las pantallas se ve una misma proporción. Pero yo, al crear elementos dinámicamente, al atribuir a un layout un layoutParams.setMargins(); éstos se deben establecer en píxeles. Lo que hago para establecer los píxeles en base a los dp uso lo siguiente:

px = (int) (20 * scale + 0.5f);

Lo que pasa es que al variar entre pantallas, la distancia establecida con 'px' varía. Qué es lo que puedo usar para que se vea como en el XML?

Estoy un poco empanado hoy, acabo de preguntar casi lo mismo xDD

Bueno, en mi caso es al revés, quiero modificar el tamaño de los layouts en XML para hacerlos proporcionales a otros elementos.

En http://stackoverflow.com/questions/4275797/view-setpadding-accepts-only-in-px-is-there-anyway-to-setpadding-in-dp comentan cómo transformar dp en px. Que por cierto es lo mismo que has puesto.

¿Cuál es el problema exactamente?