Wie lässt sich das Layout mit View den verbleibenden Platz füllen?
Lesezeit: 7 Minuten
Lukas Wo
Ich entwerfe meine Anwendungs-UI. Ich brauche ein Layout, das so aussieht:
(< und > sind Schaltflächen). Das Problem ist, ich weiß nicht, wie ich sicherstellen kann, dass die TextView 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 wie das Bild aussieht?
Was verwendest du als Root-Layout?
– holzscheu
11. Juni 2011 um 14:49 Uhr
@woodshy Jedes Layout ist in Ordnung, es spielt keine Rolle.
– Lukas Vo
11. Juni 2011 um 15:11 Uhr
Vivek Pandey
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 Verdeutlichung:
Es gibt sowas wie alignLeft und alignParentLeftusw., was niemals erreicht werden kann LinearLayout.
– Eisige Flamme
28. Juni 2016 um 7:23 Uhr
Ich verstehe nicht ganz, wie das möglich ist, aber es ist wirklich ein cooler Trick, RelativeLayout zu vermeiden
– a. dibacco
19. Januar 2017 um 21:11 Uhr
Wie kann dies die akzeptierte Antwort sein? Es gibt keine Bildansicht, es ist nur ein Teil der Lösung. Zumindest ist es besser als die alte am besten bewertete Antwort mit relativem Layout (ich habe in meiner Antwort erklärt, warum)
– Livio
7. Oktober 2017 um 17:27 Uhr
holzscheu
Wenn <TextView> wird in a platziert LinearLayoutsetzen Sie die Layout_weight Eigentum von < und > auf 0 und 1 für die TextView.
Wenn Sie eine verwenden RelativeLayoutausrichten < und > nach links und rechts und legen Sie die Eigenschaften “Layout links von” und “Layout rechts von” fest TextView zu den IDs von < und >.
Braucht noch jemand Muster?
– holzscheu
11. Juni 2011 um 16:18 Uhr
So fügen Sie diesem Layout Bilder hinzu, um die gesamte Ansicht auszufüllen
– Tushar Pandey
25. Mai 2014 um 11:43 Uhr
@woodshy ja ein Muster wäre noch hilfreich
– Frank Schwietermann
25. September 2014 um 20:59 Uhr
Was es schwierig machte, dem zu folgen, war “< und >“, das sich auf den ursprünglichen Beitragsbegriff bezieht. Gemeint sind die Schaltflächen mit der Bezeichnung „<“ bzw. „>“.
– Farrukh Najmi
3. Mai 2017 um 13:52 Uhr
@woodshy Beispiel würde es besser machen, oder?
– Steve Moretz
4. Februar 2019 um 5:50 Uhr
Ungureanu Liviu
Wenn du benutzt RelativeLayoutdas kannst du so machen:
Danke, es funktioniert 🙂 Aber ich verstehe nicht. Warum füllt die TextView nicht den gesamten Platz aus, nicht für die > Taste?
– Lukas Vo
11. Juni 2011 um 15:09 Uhr
Warum zwei verschachtelte relative Layouts? Die Wurzel sollte ausreichen. Dann müssen Sie nur noch sicherstellen, dass die untergeordneten Elemente des unteren relativen Layouts alle alignParentBottom=”true” sind.
– Noel
11. Juni 2011 um 15:10 Uhr
@Noel Du hast recht. Ich wähle 2 Layouts, weil ich das gewohnt bin: In meinen Anwendungen kann es vorkommen, dass ich die Sichtbarkeit einiger Ansichten ändern muss und es einfacher ist, alle in ein Layout zu packen und die Sichtbarkeit nur für dieses Layout zu ändern . Mein Beispiel ist nicht perfekt, aber es funktioniert und könnte für jemanden nützlich sein.
– Ungureanu Liviu
11. Juni 2011 um 15:48 Uhr
@WN Das ist auch für mich seltsam 🙂 Ich denke, die Textansicht verwendet nicht den gesamten Platz, da die rechte Schaltfläche eine feste Breite hat. Wenn Sie android:layout_width = “80dp” in android:layout_width = “wrap_content” für die rechte Schaltfläche ändern, sollte es funktionieren.
– Ungureanu Liviu
11. Juni 2011 um 15:51 Uhr
Diese Antwort ist wirklich schlecht! Sie sollten es vermeiden, 2 relative Layouts zu verschachteln, da das relative Layout immer 2 Durchgänge zum Zeichnen macht (gegenüber 1 für jede andere Art von Layout). Es wird exponentiell, wenn Sie sie verschachteln. Sie sollten ein lineares Layout mit Breite = 0 und Gewicht = 1 für das Element verwenden, das Sie den verbleibenden Platz füllen möchten. Denken Sie daran: Verwenden Sie das relative Layout NUR, wenn Sie keine andere Wahl haben. stackoverflow.com/questions/4069037/…
– Livio
5. November 2015 um 10:35 Uhr
Verwendung einer ConstraintLayoutich habe so etwas gefunden
funktioniert. Der Schlüssel liegt darin, die Einschränkungen für die rechte, linke, obere und untere Kante entsprechend festzulegen und dann die Breite und Höhe auf festzulegen 0dp und es seine eigene Größe herausfinden lassen.
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 (dasjenige, das Sie den verbleibenden Platz füllen möchten) legen Sie ein Gewicht von 1 fest (stellen Sie die Breite ein, um seinen Inhalt zu umschließen), sodass es den Rest des Bereichs ausfüllt.
Sie können das hohe layout_weight-Attribut verwenden. Unten sehen Sie ein Layout, in dem ListView den gesamten freien Speicherplatz mit Schaltflächen unten einnimmt:
Sie sollten es vermeiden, 2 relative Layouts zu verschachteln, da das relative Layout immer 2 Durchgänge zum Zeichnen macht (gegenüber 1 für jede andere Art von Layout). Es wird exponentiell, wenn Sie sie verschachteln. Sie sollten ein lineares Layout mit Breite = 0 und Gewicht = 1 für das Element verwenden, das Sie den verbleibenden Platz füllen möchten. 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.
Was verwendest du als Root-Layout?
– holzscheu
11. Juni 2011 um 14:49 Uhr
@woodshy Jedes Layout ist in Ordnung, es spielt keine Rolle.
– Lukas Vo
11. Juni 2011 um 15:11 Uhr