2010-09-02 14 views
19

Ich versuche, eine Seite in drei Teile zu teilen. Ich möchte das in Prozentwerten tun, das wird jedoch von Android nicht unterstützt. Stattdessen muss ich android:layout_weight verwenden. Aber es fällt mir schwer, es zu verstehen und es richtig zu machen. Vor allem, wie die tatsächliche Größe berechnet wird. Gibt es eine Möglichkeit, einen Prozentwert (0..100%) von android:layout_weight zu erhalten?Android: versuchen, Android zu verstehen: layout_weight

Ich ging ein paar Fälle durch (siehe beigefügten Screenshot), um die Probleme zu beschreiben. Die farbigen Felder sind alle <LinearLayout> mit android:layout_height="fill_parent", weil ich den ganzen Bildschirm zwischen diesen teilen möchte.

Fall 1

alt text

Okay, einfach. Jeder <LinearLayout> bekommt 33%.

Fall 2

alt text

Ups ?! Der erste (gelbe) <LinearLayout> verschwindet vollständig? Warum?

Fall 3

alt text

wieder verwirrt. Die gelbe <LinearLayout> ist zurück. Allerdings werden die beiden ersten <LinearLayout> mit dem schwereren Gewicht kleiner? Was ist los?

Fall 4

alt text

ich absolut keine Ahnung, was haben die Mathematik dahinter steckt.

Antwort

25

Gibt es eine Möglichkeit, einen Prozentwert (0..100%) aus Android: layout_weight zu erhalten?

Sicher. Machen Sie sie zu 100.

Für Ihren "Prozentwert" möchten Sie die android:layout_height der einzelnen Elemente innerhalb der LinearLayout0px sein.

+8

Mark, du hast meinen Tag gemacht. Du kannst nicht glauben, wie viel Zeit ich schon damit verbracht habe, die seltsamen Fälle herauszufinden. Und ein einfacher 'android: layout_height =" 0px "' löst alles :-) – znq

+1

Das Setzen von layout_width auf "fill_parent" und layout_weight auf einen Float-Wert wie "0.2", "0.75" funktioniert auch, in diesem Fall ist die Zahl umso größer Teil des Raumes, den das Element einnehmen wird. Könnten Sie bitte sagen, ob dies ein akzeptabler Weg ist? – Yar

8

Wenn Sie android: layout_height = "fill_parent" für die Balken verwenden, verlassen Sie keinen verfügbaren Platz. (Da sie die Eltern füllen.) Da alle 3 auffüllen, ist die angeforderte Höhe tatsächlich 3x die Elternhöhe, so dass die Gewichte auf einen negativen verbleibenden Raum angewendet werden. Dies erklärt das seltsame Verhalten, das Sie sehen, und warum das Einstellen von layout_height auf 0px es löst.

+0

Der Link ist tot. Ist Ihr Blogpost an anderer Stelle verfügbar? –

Verwandte Themen