2011-01-05 6 views
39

Festlegen von zwei oder mehr Elemente eines linearen Layouts die gleiche Höhe scheint ein großes Problem sein.Kombination von wrap_content auf Eltern und fill_parent auf Kind

Ich möchte vier Tasten in einer Reihe auf die gleiche Höhe setzen.

android: layout_height = "wrap_content" tut es für den Moment, aber wenn der Text auf einer der Schaltflächen länger als eine Zeile ist, ist diese Schaltfläche erhöht und daher größer als die anderen. Aufgrund verschiedener Lokalisierungen weiß ich nicht, wann und welche Taste eine zweite Zeile haben kann.

Also meine Idee ist, zu die Eltern gesetzt Linearlayout auf Android: layout_height = "wrap_content" und alle Kinder Höhen android (!): Layout_height = "fill_parent".

Das funktioniert (alle Tasten haben die gleiche Größe), aber ich bin mir nicht sicher, ob dies irgendwelche anderen Probleme verursacht? Weil das Elternteil seine Größe von den Kindern erhält und umgekehrt.

+0

Ich hatte genau die gleiche Frage, vielen Dank für die Frage, Sir :) –

+0

Bin ich der Einzige, in dem das nicht funktioniert? – Tiago

Antwort

53

In der Theorie, was Sie beschreiben sollte funktionieren nicht ("Weil es die Eltern wird es Höhe ist aus die Kinder und umgekehrt. "Aber wir haben es in LinearLayout funktioniert, weil es ein sehr häufiger Anwendungsfall war. Ich habe vor kurzem ähnliche Unterstützung für FrameLayout hinzugefügt (diese Funktion sollte Teil von Honeycomb sein.) Was Sie tun, ist daher perfekt gültig und wird gut funktionieren

+2

Auch wenn ich akzeptiere, dass es funktioniert, bin ich immer noch verwirrt, warum es funktioniert. Es ist ein bisschen seltsam wegen der rekursiven Natur (Eltern fragt Kind und Kind fragt zurück). Gibt es irgendwo eine aktuelle Dokumentation darüber, wie der Layoutprozess in diesem Fall funktioniert? Insbesondere wählt das übergeordnete Element seine Größe so aus, dass es die Größe des größten untergeordneten Elements aufweist. Daher das Ergebnis aller Kinder mit derselben Größe. Ist das dokumentiert? – ramcrys

+0

@ramcrys kann es hilfreich sein, daran zu denken, dass das Kind nie nach der Elterngröße fragt - es wird immer eins gegeben: die Eltern messen die Kinder und übergeben die verfügbare Größe (Pixel) mit einem Qualifier (nicht spezifiziert, höchstens genau) . – ataulm

+0

scheint dies nicht sehr "wrap_content" zu sein. Ich habe zwei Knöpfe nebeneinander in einem 'LinearLayout'. Sie sind größer, wenn ihre Höhe auf 'match_parent' als auf' wrap_content' eingestellt ist. EDIT: ah, 'LinearLayout' hat auch Spaß mit' baseLineAligned' – Sam

-2

Das macht keinen Sinn machen :(

Warum Sie nicht verwenden android:singleLine="true" und einige ellipsode?

Verwandte Themen