Ver la Versión Completa : Duda con los layout
Hola,
Estoy intentando crear una activity que contenga una imagen y dos botones en la parte inferior para seleccionar o quitar la imagen.
Estoy intentando crear dos linearlayout dentro de un linear, uno que contenta un imageview y otro que contenga los dos botones. De esta manera el imageview lo puedo poner a match parent dentro de su layout.
El problema con el que me encuentro es que si pongo el layout de los botones en la parte superior con el atributo de la altura wrap_content y debajo el layout del imageview con match parent entonces me lo coloca bien, me muestra los dos botones en la parte superior y el resto del espacio lo ocupa el layout de la imagen.
El probelma lo tengo si quiero que el layout de los botones esté debajo porque entonces el primer layout de la imagen ocupa todo el espacio aunque a mi enteder debería ocupar el hueco que queda al ser match_parent.
Gracias
No veo claro tu distribución. Si nos has puesto atributos de altura máxima, el layout de ImageView va a ocupar todo el padre aunque pongas luego los botones, que quedarán fuera.
Yo pondría
<LinearLayout horizontal>
<ImageView> con el atributo heigth=0dp y weight
<LinearLayout vertical> con el atributo heigth=0dp y weight
<Button>
<Button>
Hola oxot,
A lo que me refiero es más o menos a esto:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button2" />
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:baselineAligned="false">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView" />
</LinearLayout>
</LinearLayout>
Lo que quiero hacer es que tenga el hueco de toda la activity menos la parte de los botones que están debajo para la imagen. El layout de ejemplo me pone los botones arriba y el resto lo ocupa la activity de la imagen. Si cambio el orden de los layout no debería de ser lo mismo al decir que el layout de la imagen es match_parent?
No veo claro tu distribución. Si nos has puesto atributos de altura máxima, el layout de ImageView va a ocupar todo el padre aunque pongas luego los botones, que quedarán fuera.
Yo pondría
<LinearLayout horizontal>
<ImageView> con el atributo heigth=0dp y weight
<LinearLayout vertical> con el atributo heigth=0dp y weight
<Button>
<Button>
supongo que te refieres a algo como esto
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="16dp">
<ImageView
android:layout_width="fill_parent"
android:layout_height="0dp"
android:id="@+id/imageView"
android:src="@drawable/ic_launcher"
android:layout_weight="90"
android:layout_margin="20dp"
android:background="@android:drawable/editbox_background_normal" />
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="10"
android:layout_gravity="center_vertical">
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button"
android:layout_weight="0.5"
android:layout_gravity="center_vertical" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button2"
android:layout_weight="0.5"
android:layout_gravity="center_vertical" />
</LinearLayout>
</LinearLayout>
Lo que no me cuadra es la utilización del weight como en este caso 90 / 10 porque en vez del 10 me gustaría solamente usar la altura de los botones para el layout. Además de esta manera al cambiar la configuración entre un telefono y una tablet no se distorsionan los botones?
Entiendo lo que dices pero puedes arreglarlo fácilmente. Haces el layout de los botones como un wrap_content y así se ajustará su altura automáticamente y el ImageView le pones a la propiedad layout_weight="1" para que rellene el resto del layout.
Algo así:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="match_parent"
android:layout_height="0dp"
android:id="@+id/imageView"
android:src="@drawable/ic_launcher"
android:layout_weight="1"
android:background="@android:drawable/editbox_background_normal" />
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button"
android:layout_gravity="center_vertical" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button2"
android:layout_gravity="center_vertical" />
</LinearLayout>
</LinearLayout>
Por cierto, fill_parent está desaconsejado a partir de la API 8, vamos, desde tiempos de maria castaña. Ahora deberías usar match_parent.
Te quedará algo así:
Gracias Oxot, es lo que quería. Pense que para usar la propiedad weight tenía que dar un porcentaje tanto a la imagen como también al layout de los botones pero con poner 1 el de los botones ya respeta su contenido.
También he intentado con relativelayout y consigo el efecto que quería pero no me fui del relativelayout por si trabaja en diferentes tamaños de pantalla y me la prepare.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="false"
android:id="@+id/linearLayout">
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="aa"
android:id="@+id/button3"
android:layout_weight="0.5" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="bb"
android:id="@+id/button4"
android:layout_weight="0.5" />
</LinearLayout>
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/imageView2"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:src="@drawable/ic_launcher"
android:padding="25dp"
android:layout_above="@+id/linearLayout"
android:contentDescription="aa" />
</RelativeLayout>
vBulletin® v3.8.1, Copyright ©2000-2026, Jelsoft Enterprises Ltd.