Wenn Sie sich das angehängte Bild ansehen. Ich muss meinen Knopf richtig ausrichten, aber aus irgendeinem Grund funktioniert er nicht mit 'Schwerkraft: richtig' ...
Hier ist mein Code für dieses Layout:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="35dp">
<TextView
android:id="@+id/lblExpenseCancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/cancel"
android:textColor="#404040"
android:layout_marginLeft="10dp"
android:textSize="20sp"
android:layout_marginTop="9dp" />
<Button
android:id="@+id/btnAddExpense"
android:layout_width="wrap_content"
android:layout_height="45dp"
android:background="@drawable/stitch_button"
android:layout_marginLeft="10dp"
android:text="@string/add"
android:layout_gravity="right"
android:layout_marginRight="15dp" />
</LinearLayout>
Warum funktioniert das nicht?!
android
android-layout
ROMANIA_engineer
quelle
quelle
Antworten:
Verwenden Sie dazu den folgenden Code
quelle
LinearLayout
Einzellösung. Nur eine einfache Abstandsansicht hinzufügen:(Niemand schien diese erwähnt zu haben, nur kompliziertere Multi-Layout-Lösungen.)
Beachten Sie die "hervorgehobene" Ansicht, ich habe nichts anderes geändert. Höhe = 0 stellt sicher, dass es nicht sichtbar ist. Breite = 0 ist, weil die Breite durch das
LinearLayout
basierend auf Gewicht = 1 bestimmt wird. Dies bedeutet, dass sich die Abstandshalteransicht so weit wie möglich in Richtung (Ausrichtung) desLinearLayout
.Beachten Sie,
android.widget.Space
android.support.v4.widget.Space
View
dass Sie oder anstelle von verwenden sollten, wenn Ihre API-Ebene und / oder Abhängigkeiten dies zulassen.Space
erreicht den Job auf eine billigere Art und Weise, weil er nur misst und nicht versucht, etwas Ähnliches zu zeichnenView
; es ist auch ausdrucksvoller, die Absicht zu vermitteln.quelle
Ich weiß, dass diese Frage vor einiger Zeit gestellt wurde, aber ich habe dies bereits getan und sie ermöglicht mehr Kontrolle beim Ausrichten von Elementen. Wenn Sie sie wie Webprogrammierung betrachten, hilft sie. Sie verschachteln einfach eine andere
LinearLayout
, die Ihre Schaltfläche enthält. Sie können dann die Schwerkraft des Schaltflächenlayouts ändern und es nach rechts verschieben, während sich das LayoutTextView
noch auf der linken Seite befindet.Versuchen Sie diesen Code:
Möglicherweise müssen Sie mit dem Auffüllen des verschachtelten Layouts spielen, damit es so funktioniert, wie Sie es möchten.
quelle
Echte Lösung für diesen Fall:
android:layout_weight="1"
für TextView und Ihre Schaltfläche nach rechts bewegen!quelle
Probier diese
quelle
Wie bereits einige Male erwähnt: Der Wechsel von LinearLayout zu RelativeLayout funktioniert, aber Sie können das Problem auch lösen, anstatt es zu vermeiden. Verwenden Sie die Werkzeuge, die ein LinearLayout bietet: Geben Sie der Textansicht eine Gewichtung = 1 (siehe Code unten), die Gewichtung für Ihre Schaltfläche sollte 0 oder keine bleiben. In diesem Fall nimmt die Textansicht den gesamten verbleibenden Speicherplatz ein, der nicht zum Anzeigen des Inhalts Ihrer Textansicht oder ButtonView verwendet wird, und drückt Ihre Schaltfläche nach rechts.
quelle
RelativeLayout
aufgrund von Speicherproblemen, da dasRelativeLayout
viel mehr Speicher verbraucht alsLinearLayout
Sie müssen dem Layout die Schwerkraft hinzufügen, nicht die Schaltfläche. Die Schwerkraft in den Schaltflächeneinstellungen gilt für Text innerhalb der Schaltfläche
quelle
Dies wird Ihr Problem lösen
quelle
Wenn Sie RelativeLayout nicht verwenden möchten oder können, können Sie die Schaltfläche in ein LinearLayout mit der Ausrichtung "vertikal" und der Breite "fill_parent" einschließen.
Dies liegt daran, dass die Schwerkraft die Ansichten nur vertikal beeinflusst, wenn die Ausrichtung des LinearLayout horizontal ist. Wenn die Ausrichtung "vertikal" ist, wirkt sich die Schwerkraft nur horizontal auf die Ansichten aus. Weitere Informationen zur Erklärung der Ausrichtung / Schwerkraft des LinearLayout finden Sie hier .
quelle
Fügen Sie einfach android :vity = "right" hinzu. Dieses übergeordnete Linienlayout funktioniert.
quelle
Ich habe ein ähnliches Layout mit 4
TextView
s verwendet. ZweiTextView
s sollten nach links und zweiTextView
s nach rechts ausgerichtet sein. Also, hier ist meine Lösung, wenn SieLinearLayouts
alleine verwenden möchten .quelle
Sie können RelativeLayout verwenden oder im übergeordneten Layout Ihrer Schaltfläche die Schwerkraft = "rechts" festlegen.
quelle
Ich weiß, dass dies alt ist, aber hier ist eine andere in einem linearen Layout wäre:
Bitte beachten Sie die layout_gravity im Gegensatz zur reinen Schwerkraft.
quelle
center_vertical|bottom|top
los? Sie sehen für mich wie exklusive Schwerkraft aus.Sie sollten das relative Layout anstelle des linearen Layouts als Hauptlayout verwenden. Wenn Sie Relativelayout als Hauptfunktion verwenden, können Sie die Schaltfläche auf der rechten Seite leicht bedienen, da das relative Layout uns alignParent rechts, links, oben und unten bietet.
quelle
Verwenden Sie die Layoutbreite in der Schaltfläche wie Android: layout_width = "75dp"
quelle