Android: Modificar width o height de LinearLayout mediante Java

Blog > Lista Solucione> Tamaño LinearLayout

Modificar dimensiones de alto y ancho de un LinearLayout mediante código Java

Buenas programadores, muchas veces a la hora de configurar varias resoluciones, tenemos que adaptar los elementos conforme a si se usan tablets o dispositivos móviles de distintas pulgadas.

En este post, os traigo cómo modificar las dimensiones de un LinearLayout mediante código Java.
He estado  mirando en varios foros y demás,y hay varias técnicas.Desde crear recursos xml en varias carpetas para adaptarlo en función de las dimensiones de los smartphones y tablets o mediante código Java.

En el último caso, es decir mediante código Java sólo me ha funcionado una forma: el siguiente ejemplo, consta de una actividad en la que cuenta con un linearLayout que ocupa toda la pantalla, y dentro tengo otro LinearLayout en el que he puesto una imágen como background, con una altura he insertado 200dp, de tal forma que sería asi:


y este es el código XML de la parte no gráfica de la pantalla anterior :


    

        

        

    


Bien, a la hora de trabajar en varias resoluciones de pantalla, un tamaño como el de la imágen anterior, en un Nexus One de 3,7 pulgadas (480dp x800dp) quedaría bien con el efecto deseado, pero como digo, a la hora de usar una pantalla más grande, quedaría así(WVGA 5,1 pulgadas) quedaría así :


¿Qué diferencia verdad? Entonces para que sea algo que podamos manejar con facilidad desde código Java, os explico lo que haremos, medimos la pantalla del dispositivo en la que se ejecuta la aplicación, y en función de la medida, aplicamos un tamaño u otro por medio de fracciones, quedando ajustado a la medída deseada, da igual que sigas teniendo en height 200dp, al final ejecutando el siguiente código, se pondrá el layout con la medida proporcional deseada:

//MEDIMOS LA PANTALLA
Display display = getWindowManager().getDefaultDisplay();
int ancho = display.getWidth();
int  alto= display.getHeight();
//ASIGNAMOS MEDIANTE ID EL LAYOUT
layout1 =(LinearLayout)findViewById(R.id.milayoutestirableporcodigo);
//POR EJEMPLO LE VOY A PONER 1/3, PARA QUE EN CUALQUIER 
//DISPOSITIVO MIDA EL ALTO DE LA IMAGEN 
//1/3 DE LA PANTALLA
layout1.getLayoutParams().height=alto*1/3;
//ANCHO DE BANDA ARRIBA
layout1.getLayoutParams().width=ancho;
 
Así conseguiremos que en cualquier dispositivo de cualquier dimension, esa imagen ocupe 1/3 del alto de la pantalla, aunque ahora vienen los problemas de pixelación de la imagen, que más adelante veremos cómo podemos solucionarlo.

 Un saludo amigos! Espero que os haya ayudado a más de uno!

oOo mAkOnE oOo 



Podeis descargar el código fuente de thebestandroide con sólo compartir en facebook,twitter,linkedin o suscribirte a nuestro canal RSS más abajo. 



Compartir Compartir Compartir Compartir




7 comentarios:

  1. Gracias amigo saludos me sirvio mucho.

    ResponderEliminar
  2. Lo mejor es que uses ConstraintLayout, esta diseñado para trabajar este tipo de cosas y en tiempo de diseño puedes definir cuanto quieres que te ocupe en tu pantalla, ya sea por medidas exactas o %

    ResponderEliminar
  3. chido no sabia con hacer el set para el layout sin tanto rollo gracias

    ResponderEliminar