Gibt es eine Eigenschaft für das LinearLayout von Android, mit der untergeordnete Steuerelemente ordnungsgemäß umbrochen werden können?
Das heißt - ich habe eine veränderbare Anzahl von Kindern und möchte sie horizontal auslegen wie:
Beispiel: Control1, Control2, Control3, ...
Ich mache das, indem ich Folgendes einstelle:
ll.setOrientation (LinearLayout.HORIZONTAL); foreach (Kind c bei Kindern) ll.addView (c);
Wenn ich jedoch eine große Anzahl von Kindern habe, wird das letzte abgeschnitten, anstatt zur nächsten Zeile zu gehen.
Irgendeine Idee, wie dies behoben werden kann?
Antworten:
Ab Mai 2016 hat Google eine eigene erstellt,
FlexBoxLayout
die Ihr Problem lösen soll.Das GitHub-Repo finden Sie hier: https://github.com/google/flexbox-layout
quelle
Dies sollte sein, was Sie wollen:
und die XML-Datei
quelle
ClassCastException
. Der Grund für diese Ausnahme ist das unvollständige Kopieren aus einer anderen Stackoverflow-Frage, stackoverflow.com/q/549451/1741542 . Wenn Sie einegenerateLayoutParams(ViewGroup.LayoutParams p)
Methode hinzufügen , funktioniert dies wie erwartet.new LayoutParams(1, 1, p)
, weiß nicht, warum Leute abstimmen, ohne Code zu versuchenFür alle, die diese Art von Verhalten brauchen:
quelle
Alte Frage, aber falls jemand hier landet, zwei Bibliotheken, die genau das tun:
https://github.com/blazsolar/FlowLayout
https://github.com/ApmeM/android-flowlayout
quelle
Auf der Suche nach einer Lösung für ein ähnliches, aber einfacheres Problem, dh das Umschließen von untergeordnetem Textinhalt in ein horizontales Layout. Die Lösung von kape123 funktioniert einwandfrei. Mit ClickableSpan finden Sie jedoch eine einfachere Lösung für dieses Problem. Vielleicht könnte es für einen einfachen Fall nützlich sein. Ausschnitt:
quelle
Eine modifizierte Version des Codes aus Randy Sugianto 'Yukus Antwort und was ich schließlich gemacht habe:
In der Datei style / attrs.xml:
Verwendung:
quelle
Mit der obigen Methode wird die Bildansicht nebeneinander wie agrid und in Ihrem Layout hinzugefügt
Ich poste diese Lösung, vielleicht hilft sie jemandem und spart einmal und ich benutze sie in meiner App
quelle
Am Ende habe ich ein TagView verwendet :
quelle
Google bietet eine eigene Lösung an: Klasse FlowLayout
Diese Klasse funktioniert ähnlich wie die oben beschriebene Klasse FlowLayout. Sie sollten Ihrem Projekt jedoch keine neue Klasse hinzufügen, und Designer arbeitet mit dieser Klasse besser als mit benutzerdefinierten
quelle
Ich wollte eine sehr einfache Lösung, die flexibel ist (weshalb ich LinearLayouts verwende). Das habe ich mir ausgedacht.
https://github.com/ShalakoSnell/Wrapping_Linear_Layout
Hinweis: Ich habe eine Beispielmethode mit Textansichten eingefügt (siehe textViewArrayListForExample ()). Das XML ist nur eine übergeordnete Ansicht LinearLayout mit ID und vertikaler Ausrichtung, nichts anderes erforderlich. Verwendung: Übergeben Sie ein Array von Ansichten, die in LinearLayouts eingeschlossen sind, zusammen mit der übergeordneten Ansicht und dem Kontext. (siehe viewAdapterArrayList (ArrayList textViews))
Das Übergeben eines Arrays von LinearLayouts macht diesen Ansatz so flexibel, dass Sie verschiedene Ansichtstypen hinzufügen können. Im ersten LinearLayout könnten Sie also Text haben und im zweiten könnten Sie ein Bild haben, im dritten eine Schaltfläche und so weiter ...
Portrait Beispiel Landschaft Beispiel 50dp Margen in verticalLinearLayout (sorry ich kann keine Bilder noch hinzufügen ... die Links sehen.
MainActivity.java
activity_main.xml
WrappingLinearLayout.Java
Zusätzlicher Code zum Beispiel Anwendungsfall:
quelle