Ich entwerfe meine Anwendungsoberfläche. Ich brauche ein Layout, das so aussieht:
(<und> sind Schaltflächen). Das Problem ist, ich weiß nicht, wie ich sicherstellen soll, dass die Textansicht den verbleibenden Platz ausfüllt, wobei zwei Schaltflächen eine feste Größe haben.
Wenn ich fill_parent für die Textansicht verwende, kann die zweite Schaltfläche (>) nicht angezeigt werden.
Wie kann ich ein Layout erstellen, das dem Bild entspricht?
android
layout
android-layout
Luke Vo
quelle
quelle
Antworten:
Die Antwort von woodshy hat bei mir funktioniert und ist einfacher als die Antwort von Ungureanu Liviu, da sie nicht verwendet wird
RelativeLayout
. Ich gebe mein Layout zur Klarheit:quelle
alignLeft
undalignParentLeft
usw., mit denen man niemals etwas erreichen kannLinearLayout
.Wenn <TEXT VIEW> in LinearLayout platziert ist, setzen Sie die Eigenschaft Layout_weight von <und> für TextView auf 0 und 1.
Im Falle von RelativeLayout richten Sie <und> nach links und rechts aus und setzen Sie die Eigenschaften "Layout links von" und "Layout rechts von" von TextView auf die IDs von <und>
quelle
Wenn Sie verwenden
RelativeLayout
, können Sie es so etwas tun:quelle
>
Schaltfläche?Mit a
ConstraintLayout
habe ich so etwas gefundenfunktioniert. Der Schlüssel besteht darin, die Einschränkungen für die rechte, linke, obere und untere Kante entsprechend festzulegen, dann die Breite und Höhe auf
0dp
einzustellen und die eigene Größe herauszufinden.quelle
TextView
die linken und rechten Einschränkungen vorhanden sind. DasTextView
wird nicht gedehnt, wenn das ersteButton
die rechte Einschränkung für dasTextView
und das letzteButton
die linke Einschränkung für das hatTextView
.Es ist ganz einfach. Sie stellen die minWidth oder minHeight ein, je nachdem, wonach Sie suchen, horizontal oder vertikal. Und für das andere Objekt (das, das Sie den verbleibenden Raum ausfüllen möchten) setzen Sie eine Gewichtung von 1 (stellen Sie die Breite ein, um den Inhalt zu umschließen), damit der Rest des Bereichs ausgefüllt wird.
quelle
Sie können das Attribut high layout_weight verwenden. Unten sehen Sie ein Layout, in dem ListView den gesamten freien Speicherplatz mit Schaltflächen unten belegt:
quelle
Für diejenigen, die den gleichen Fehler haben
<LinearLayout...>
wie ich:Es ist wichtig anzugeben
android:layout_width="fill_parent"
, dass es nicht funktioniertwrap_content
.OTOH, Sie können weglassen
android:layout_weight = "0"
, es ist nicht erforderlich.Mein Code ist im Grunde der gleiche wie der Code in https://stackoverflow.com/a/25781167/755804 (von Vivek Pandey).
quelle
Sie sollten vermeiden, 2 relative Layouts zu verschachteln, da das relative Layout beim Zeichnen immer 2 Durchgänge durchführt (gegenüber 1 für jeden anderen Layouttyp). Es wird exponentiell, wenn Sie sie verschachteln. Sie sollten ein lineares Layout mit Breite = 0 und Gewicht = 1 für das Element verwenden, das den verbleibenden Platz ausfüllen soll. Diese Antwort ist besser für die Leistung und die Praktiken. Denken Sie daran: Verwenden Sie das relative Layout NUR, wenn Sie keine andere Wahl haben.
quelle
Sie können das Setzen von
layout_width
oderlayout_width
auf0dp
(Durch die Ausrichtung möchten Sie den verbleibenden Raum füllen) verwenden. Verwenden Sie dann dielayout_weight
, um den verbleibenden Platz zu füllen.quelle
Verwenden Sie ein Relativelayout, um das LinearLayout zu verpacken
quelle
ich fand
quelle
Wenn Sie ein relatives Layout verwenden, können Sie eine Ansicht dehnen, indem Sie sie in beiden Ansichten verankern, in die sie sich erstrecken soll. Obwohl die angegebene Höhe nicht berücksichtigt wird, benötigt Android immer noch ein Höhenattribut, weshalb ich "0dp" geschrieben habe. Beispiel:
quelle