2011-01-05 8 views
39

Establecer dos o más elementos de un diseño lineal de la misma altura parece ser un gran problema.combinando wrap_content en parent y fill_parent en hijo

Quiero establecer cuatro botones en una fila a la misma altura.

android: layout_height = "wrap_content" lo hace por el momento, pero cuando el texto en uno de los botones es más largo que una línea, este botón se incrementa y por lo tanto es más grande que los otros. Debido a las diferentes localizaciones, no sé cuándo y qué botón puede tener una segunda línea.

Así que mi idea es, a establezca la matriz LinearLayout a android: layout_height = "wrap_content" y todos los niños a alturas androide (!): Layout_height = "fill_parent".

Esto funciona (todos los botones tienen el mismo tamaño), pero no estoy seguro si esto causa algún otro problema? Debido a que el padre obtiene su altura del niño y viceversa.

+0

Tuve exactamente la misma pregunta, muchas gracias por preguntarlo señor :) –

+0

¿Soy el único en el que esto no funciona? – Tiago

Respuesta

53

En teoría lo que está describiendo no debe trabajar ("Debido a que el padre recibe su altura desde los niños y viceversa ".) Sin embargo, lo hicimos funcionar en LinearLayout porque era un caso de uso muy común. Recientemente agregué un soporte similar a FrameLayout (esta característica debería ser parte de Honeycomb). Por lo tanto, lo que estás haciendo es perfectamente válido y funcionará bien.

+2

Incluso cuando acepto que funciona, todavía estoy confundido de por qué funciona. Es un poco raro debido a la naturaleza recursiva (el padre le pregunta al niño y el niño le pregunta de vuelta). Entonces, ¿hay alguna documentación real en algún lugar que indique cómo funciona el proceso de disposición en este caso? En particular, el padre elige su tamaño para que sea del tamaño del niño más grande. De ahí el resultado de todos los niños con el mismo tamaño. Está esto documentado? – ramcrys

+0

@ramcrys podría ser útil recordar que el niño nunca "pregunta" por el tamaño de los padres: siempre le dan uno: los padres miden a los niños, pasando el tamaño disponible (píxeles) con un calificador (no especificado, como máximo, exactamente) . – ataulm

+0

esto no parece 'wrap_content' con mucha fuerza. Tengo dos botones sde al lado en un 'LinearLayout'. Son más altos con su altura establecida en 'match_parent' que con' wrap_content'. EDITAR: ah, 'LinearLayout' también se está divirtiendo con' baseLineAligned' – Sam

-2

Eso no tiene sentido :(

¿Por qué no usar android:singleLine="true" y algunos ellipsode?

Cuestiones relacionadas