studio programacion from ejemplo android layout width imageview weight

from - manual de programacion android pdf



¿Cómo garantizar el espacio para un ImageView, evitar que se reduzca? (2)


Necesito crear un xml con el siguiente contenido:
* Dos TextViews con texto variable (1-3 filas), un TextView debajo del otro.
* Un ImageView a la derecha de los 2 TextViews, centrado verticalmente, 30x30 px.

Una de las principales limitaciones es que no puede tomar toda la pantalla cuando se infla en una ventana emergente, lo que significa que no puedo usar los atributos fill_parent en muchos lugares.

Probé con muchos diseños diferentes, pero el ImageView sigue siendo desplazado por TextViews cuando el texto es largo. Cuando el texto es "medio largo", la imagen se vuelve minúscula pero aún es visible. Quiero que siempre sea de 30x30 px, el texto se puede ajustar y usar otra línea en su lugar.

Traté de especificar valores para ancho y min Ancho. También intenté layout_weight = "1" para ImageView. También intenté envolver ImageView en LinearLayout y darle el parámetro layout_weight = "1". Nada funciona .. ¡Por favor ayuda, se está poniendo frustrante!

Aquí hay un ejemplo de lo que no funciona:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"> <TextView android:id="@+id/popupTitle" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <TextView android:id="@+id/popupContent" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/img_30x30_px" /> </LinearLayout>

¡¡Gracias!!


¡Muchas gracias, Emile! ¡Funciona! ¡Hiciste mi fin de semana! :)

Tuve que probarlo de inmediato (aunque es viernes por la noche), y así es como se ve ahora mi xml:

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:shrinkColumns="0"> <TableRow> <!-- Column 1 --> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical"> <TextView android:id="@+id/popupTitle" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <TextView android:id="@+id/popupContent" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> <!-- Column 2 --> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:src="@drawable/img_30x30_px" /> </TableRow> </TableLayout>


Tuve un problema similar y descubrí que el diseño de TableView me funcionaba. Tardó un tiempo, pero puede jugar con las propiedades de las columnas stretch y strink para cambiar el comportamiento de cómo se expanden las columnas para que coincida con su contenido.

Tenga en cuenta que debe poder establecer linearLayout de su texto en fill_parent (para llenar el espacio de la columna).

Lea esto sobre cómo funciona TableRow http://developer.android.com/resources/tutorials/views/hello-tablelayout.html

<TableRow> <!-- Column 1 --> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical"> <TextView android:layout_column="1" android:text="Open..." android:padding="3dip" /> <TextView android:text="Ctrl-O" android:gravity="right" android:padding="3dip" /> </LinearLayout> <!-- Column 2 --> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/img_30x30_px" /> </TableRow>

(Temo que no estoy en una máquina con Android, así que no pude probar el código anterior).