Ich habe immer über diesen lustigen Gewichtswert in den Android-Dokumentationen gelesen. Jetzt möchte ich es zum ersten Mal versuchen, aber es funktioniert überhaupt nicht.
So wie ich es aus den Dokumentationen verstehe, ist dieses Layout:
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:text="Register"
android:id="@+id/register"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dip"
weight="1" />
<Button
android:text="Not this time"
android:id="@+id/cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dip"
weight="1" />
</LinearLayout>
sollte zwei Schaltflächen erstellen, die horizontal ausgerichtet sind und den Raum gleichmäßig teilen. Das Problem ist, dass die beiden Schaltflächen nicht wachsen, um den Raum zu füllen.
Ich möchte, dass die Schaltflächen wachsen und die gesamte Zeile ausfüllen. Wenn beide Schaltflächen so eingestellt sind, dass sie mit der übergeordneten Schaltfläche übereinstimmen, wird nur die erste Schaltfläche angezeigt und füllt die gesamte Zeile aus.
Antworten:
Sie legen die
layout_weight
Eigenschaft nicht fest. Ihr Code liestweight="1"
und sollte lesenandroid:layout_weight="1"
.quelle
3 Dinge zu beachten:
Beispiel:
Und das Ergebnis:
quelle
addView(button, new LinearLayout.LayoutParams(0, height, 1));
Dies verwenden, auch wenn Sie Layouts mit den richtigen Werten für Breite und Gewicht aufblasen.Es ist
android:layout_weight
. Gewicht kann nur in verwendet werdenLinearLayout
. Wenn die Ausrichtung des linearen Layouts vertikal ist, verwenden Sieandroid:layout_height="0dp"
und wenn die Ausrichtung horizontal ist, verwenden Sieandroid:layout_width = "0dp"
. Es wird perfekt funktionieren.quelle
Dieses Bild fasst das lineare Layout zusammen.
Sie können diesem Link folgen, um weitere Informationen zum Thema zu erhalten. Nur Mathematik - Ansichten, Ansichtsgruppen und Layouts
Video-Tutorial für lineares Layout: Breite, Höhe und Gewichte
Android Linear Layout Tutorial
quelle
Versuchen Sie,
layout_width
beide Tasten auf "0dip" und beide Tasten auf "0dip"weight
zu stellen0.5
quelle
LinearLayout unterstützt das Zuweisen eines Gewichts zu einzelnen Kindern. Dieses Attribut weist einer Ansicht einen " Wichtigkeits " -Wert zu und ermöglicht das Erweitern, um den verbleibenden Platz in der übergeordneten Ansicht zu füllen. Das Standardgewicht ist Null
Berechnung, um verbleibenden / zusätzlichen Platz zwischen den Kindern zuzuweisen . (nicht der gesamte Raum)
Leerzeichen für Kind zuweisen = (individuelles Gewicht des Kindes) / (Summe des Gewichts jedes Kindes im linearen Layout)
Beispiel (1): Wenn drei Textfelder vorhanden sind und zwei davon eine Gewichtung von 1 deklarieren, während das dritte keine Gewichtung (0) erhält, wird der verbleibende / zusätzliche Speicherplatz zugewiesen
Beispiel (2) : Nehmen wir an, wir haben eine Textbeschriftung und zwei Textbearbeitungselemente in einer horizontalen Zeile. Für das Label ist kein layout_weight angegeben, daher nimmt es den zum Rendern erforderlichen Mindestspeicherplatz ein. Wenn das layout_weight jedes der beiden Textbearbeitungselemente auf 1 gesetzt ist, wird die verbleibende Breite im übergeordneten Layout gleichmäßig zwischen ihnen aufgeteilt (da wir behaupten, dass sie gleich wichtig sind).
Wenn das erste Textfeld ein Layoutgewicht von 1 und das zweite Textfeld ein Layoutgewicht von 2 hat, wird ein Drittel des verbleibenden Platzes dem ersten und zwei Drittel dem zweiten Platz zugewiesen (weil wir behaupten, das zweite ist wichtiger).
quelle
Im Breitenfeld der Taste, ersetzen
wrap-content
mit0dp
.Verwenden Sie das Attribut layout_weight einer Ansicht.
So sieht Ihr Code aus:
layout_weight wird verwendet, um den verbleibenden Platz in Proportionen zu verteilen. In diesem Fall nehmen die beiden Schaltflächen die Breite "0dp" an. Der verbleibende Raum wird also im Verhältnis 1: 1 aufgeteilt, dh der Raum wird gleichmäßig auf die Schaltflächenansichten aufgeteilt.
quelle
Wie Antwort von @Manoj Seelan
Ersetzen Sie
android:layout_weight
mitandroid:weight
.Wenn Sie Gewicht mit verwenden
LinearLayout
. Sie müssen hinzufügenweightSum
inLinearLayout
und nach Ausrichtung IhresLinearLayout
müssen Sie Einstellung0dp
für Breite / Höhe zu allenLinearLayout
`s Kinder BlickBeispiel:
Wenn die Ausrichtung von
Linearlayout
istVertical
, dann legen Sie die Breite allerLinearLayout
untergeordneten Ansichten von mit fest0dp
Wenn die Ausrichtung
Linearlayout
von isthorizontal
, dann stellen Sie die Höhe allerLinearLayout
Kinderansichten mit ein0dp
.quelle
Vielleicht reicht es, wenn Sie die beiden Eigenschaften layout_width der Schaltflächen auf "fill_parent" setzen.
Ich habe gerade diesen Code getestet und er funktioniert im Emulator:
Stellen Sie sicher, dass layout_width auf beiden Schaltflächen auf "fill_parent" gesetzt ist.
quelle
quelle
Stellen Sie im obigen XML
android:layout_weight
das lineare Layout wie folgt ein2
:android:layout_weight="2"
quelle
Außerdem müssen Sie dies
android:layout_width="0dp"
für untergeordnete Ansichten [Schaltflächenansichten] von hinzufügenLinerLayout
quelle
Du musst so schreiben, dass es für mich funktioniert
quelle
Nachfolgend finden Sie die Änderungen (in Fettdruck markiert ) in Ihrem Code:
Da Ihr LinearLayout horizontal ausgerichtet ist, müssen Sie Ihre Breite nur auf 0 dp beschränken. für die Verwendung von Gewichten in dieser Richtung. (Wenn Ihre Ausrichtung vertikal wäre, hätten Sie Ihre Höhe nur 0 dp gehalten) .
Da es 2 Ansichten gibt und Sie
android:layout_weight="1"
für beide Ansichten platziert haben, bedeutet dies, dass die beiden Ansichten gleichmäßig in horizontaler Richtung (oder nach Breite) geteilt werden.quelle
quelle
Dies ist die perfekte Antwort auf Ihr Problem
quelle
Ersetzen Sie
wrap_content
mitfill_parent
.quelle
quelle