![]() |
|
Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
«
Tema Anterior
|
Siguiente tema
»
|
Herramientas |
#1
|
||||
|
||||
Tamaño proporcional botones en distintas pantallas
Hola a todos,
Tengo experiencia con PHP, y ahora quería empezar con Java y Android. Quiero diseñar una aplicación similar a una calculadora. Me he estado leyendo unos tutoriales Android y ahora estoy diseñando el "layout". Lo que quiero es que el tamaño de los botones sea proporcional a la pantalla del dispositivo y encaje en cualquier móvil o tablet. He estado buscando por Internet información sobre px sp dip... y nada de esto hace lo que necesito. Lo único que si me ha funcionado ha sido insertar en el linearlayout: android:weightSum="10" y después en los botones android:layout_weight="5" Y así los botones tienen el tamaño de media pantalla. El problema es que solo en una dirección, es decir si el layout es horizontal el botón tiene el tamaño de media pantalla horizontal, pero no en vertical. Conocéis alguna manera de que funcione? Muchas gracias a todos. |
|
#2
|
||||
|
||||
A ver, lo primero es lo primero.
¿Qué entiendes por resolución? Si por resolución entiendes que en un móvil con HDPI se vea igual que en uno con MDPI, eso es fácil, solo tienes que usar como medidas DIP, ya que si usas PX se verá más pequeño en un HDPI que en un MDPI. Si por resolución entiendes que se vea igual en un móvil HDPI que en una Tablet HDPI, lo mejor es que hagas un Layout para cada uno. |
#3
|
||||
|
||||
Pero, veo que hay gente que diseña un layout para todo tipo de dispositivos usando:
android:weightSum="10" Es factible? Porque no hay ninguna medida en % como si hay en javascript o html? Lo digo porque si tengo que hacer un layout por cada tamaño de pantalla es mucho trabajo, habrá 10 tipos de pantallas diferentes. Y en este caso como lo haría para que cada dispositivo abriera su layout? Muchas gracias de nuevo y un saludo. |
#4
|
||||
|
||||
Con el weight lo que haces es que al poner controles con wrap_content (o con 0, realmente la documentación dice que hay que poner 0 pero con wrap_content también va) te ajusta los controles según ese weight. Pero para distintas resoluciones te los deformará, por eso te digo lo de usar distintos Layout.
De todas formas el weightsum te lo puedes ahorrar, se calcula automaticamente con el layout_weight de todos los hijos. Por ejemplo, si tienes un LinearLayout con 5 controles y al primero le pones: android:layout_weight="3" Y a los otros 2: android:layout_weight="1" Los controles ocuparán todo el tamaño del LinearLayout donde están contenidos pero ocupando el primer control 3/5 y los otros 2 1/5 cada uno. Por cierto, esto creo que solo funciona en horizontal, aunque en vertical nunca lo he probado. Lo del tipo de Layout según la pantalla, lo coge automaticamente el móvil (o tablet) según el directorio del layout, por ejemplo si en res tienes 2 directorios uno llamado layout-hdpi y otro layout-mdpi si el móvil es hdpi o superior cogerá el hdpi si es mdpi o inferior cogerá el mdpi. Para ver todas las posibles variantes (también puedes discriminar por el alto o ancho de la pantalla), visita esta web: http://developer.android.com/guide/p...s_support.html De todas formas usando bien los DIP y trabajando SIEMPRE con wrap_content y fillparent, y weight para los horizontales y gravity para las posiciones relativas de los bordes, tu aplicación debería funcionar bien en cualquier dispositivo. Lo único que puede que en un móvil algo ocupe toda la pantalla y en una tablet sobre media pantalla, pero la relación de aspecto será la misma (en términos de resolución de pixeles) |
Respuesta |
![]() |
||||||
|
«
Tema Anterior
|
Siguiente tema
»
|
|
Hora actual: 00:03:32 (GMT +2)
HTCMania: líderes desde el 2007