2011-01-05 7 views
39

Ustawienie dwóch lub więcej elementów układu liniowego tej samej wysokości wydaje się być dużym problemem.połączenie wrap_content na rodzicu i fill_parent na dziecku

Chcę ustawić cztery przyciski w rzędzie na tej samej wysokości.

android: layout_height = "wrap_content" robi to na razie, ale kiedy tekst na jednym z przycisków jest dłuższy niż jedna linia, ten przycisk jest zwiększany, a zatem większy niż pozostałe. Ze względu na różne lokalizacje nie wiem, kiedy i który przycisk może mieć drugą linię.

Więc moim pomysłem jest, aby ustawić parentlayout nadrzędny na android: layout_height = "wrap_content" i wszystkie (!) Wysokości dzieci na Androida: layout_height = "fill_parent".

To działa (wszystkie przyciski mają ten sam rozmiar), ale nie jestem pewien, czy powoduje to inne problemy? Ponieważ rodzic uzyskuje wysokość od dzieci i odwrotnie.

+0

Miałem dokładnie to samo pytanie, dziękuję bardzo za pytanie proszę pana :) –

+0

Czy jestem jedynym, w którym to nie działa? – Tiago

Odpowiedz

53

Teoretycznie co opisujesz nie powinno działać ("bo to rodzic dostaje to wysokość od dzieci i vice versa ".) Jednak sprawiliśmy, że działał w LinearLayout, ponieważ był to bardzo popularny przypadek.Obecnie dodałem podobne wsparcie dla FrameLayout (ta funkcja powinna być częścią Honeycomb.) To co robisz jest zatem idealnie ważne i będzie działać poprawnie

+2

Nawet jeśli przyjmuję, że to działa, wciąż jestem zdezorientowany, dlaczego to działa. To trochę dziwne ze względu na rekurencyjny charakter (rodzic prosi dziecko i dziecko zadaje pytanie). Czy istnieje gdzieś dokumentacja mówiąca o tym, jak działa proces układu? W szczególności rodzic wybiera rozmiar, aby był wielkości największego dziecka. Stąd wynik wszystkich dzieci o tej samej wielkości. Czy to jest udokumentowane? – ramcrys

+0

@ramcrys może pomóc pamiętać, że dziecko nigdy "nie zwróci" uwagi na rozmiar rodziców - zawsze jest to jedno: rodzice mierzą dzieci, przekazując dostępny rozmiar (piksele) za pomocą kwalifikatora (nieokreślony, co najwyżej) . – ataulm

+0

nie wydaje się to bardzo "wrap_content". Mam dwa przyciski obok siebie w "LinearLayout". Są wyższe, a ich wysokość jest ustawiona na 'match_parent' niż na' wrap_content'. EDYCJA: ah, 'LinearLayout' również ma trochę zabawy z' baseLineAligned' – Sam

-2

To nie ma sensu :(

Dlaczego nie używacie android:singleLine="true" a niektóre ellipsode?

Powiązane problemy