Android: ¿contenido LinearLayout distribuido dinámicamente?
Frecuentes
Visto 301 veces
0
He intentado todo lo que hay que intentar y empiezo a sospechar que esto no es realmente posible.
Lo que estoy buscando es una distribución dinámica de N niños en un LinearLayout (horizontal) basado en sus anchos. Algo así como lo hace una tabla HTML, calculando dinámicamente los anchos de columna. Básicamente, quiero convertir mi ListView en una tabla con anchos calculados dinámicamente, como tal:
<table class="ListView">
<tr class="LinearLayout"><td class="TextView">John:</td><td class="TextView">123-456-789</td></tr>
<tr class="LinearLayout"><td class="TextView">Mike:</td><td class="TextView">321-654-987</td></tr>
<tr class="LinearLayout"><td class="TextView">Sally:</td><td class="TextView">789-456-123</td></tr>
</table>
¿Cómo hago algo así en Android? Recuerda, no solo quiero dividirlo en dos partes igualmente largas. Necesito el contenido para determinar el ancho de columna. y llenar todo el LinearLayout. Así (asumiendo que solo hay dos elementos secundarios):
[ [--TextView--] [--------TextView--------] ]
3 Respuestas
1
No es posible usar LinearLayout
. Debes usar un TableLayout
con todos los elementos del TableRow' having width
envolver_contenido`. Si el número de filas que se mostrarán es dinámico, entonces debe crear e insertar filas en ViewGroup dinámicamente; de lo contrario, es bastante sencillo para los datos estáticos.
Respondido 25 ago 12, 03:08
0
puedes configurar android:layout_weight="1"
por todos tus TextView
in TableRow
, pero usando demasiado peso es malo para el rendimiento.
Respondido 25 ago 12, 02:08
0
¿Supongo que estás buscando algo como esto?
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:weightSum="100" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="This will take up much more space"
android:layout_weight="20" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="test"
android:layout_weight="80" />
</LinearLayout>
</LinearLayout>
NOTA: El fondo de "Esto ocupará mucho más espacio" es gris, porque tomé la captura de pantalla mientras pasaba el mouse sobre ese TextView para que se vea en toda su longitud.
Respondido 25 ago 12, 02:08
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas android xml android-linearlayout or haz tu propia pregunta.
Eso no va a funcionar. Divide el LinearLayout en igual porciones Los anchos no estarán determinados por el contenido. Es lo mismo que configurar "table-layout:fixed;" a una tabla HTML en CSS cuando en realidad debería ser "table-layout:auto;". - Mae
ah, olvidé algo, ¿estableciste el ancho en
wrap_content
en lugar de0dp
? - aprianoSi hago eso, los elementos no llenarán todo el espacio en LinearLayout. - Mae
se llenará, si configuras
layout_weight
a 1. - aprianoPodrías estar en algo. Lo intentaré mañana. - Mae