Die Einführung in den BlogGridLayout
des Android-Entwicklerblogs zeigt dieses Diagramm, wie sich Bereiche auf die automatische Indexzuweisung auswirken:
Ich versuche das tatsächlich mit a umzusetzen GridLayout
. Folgendes habe ich bisher:
<android.support.v7.widget.GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res/com.commonsware.android.gridlayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
app:orientation="horizontal"
app:columnCount="8">
<Button
app:layout_columnSpan="2"
app:layout_rowSpan="2"
android:layout_gravity="fill_horizontal"
android:text="@string/string_1"/>
<Button
app:layout_columnSpan="2"
android:layout_gravity="fill_horizontal"
android:text="@string/string_2"/>
<Button
app:layout_rowSpan="4"
android:text="@string/string_3"/>
<Button
app:layout_columnSpan="3"
app:layout_rowSpan="2"
android:layout_gravity="fill_horizontal"
android:text="@string/string_4"/>
<Button
app:layout_columnSpan="3"
android:layout_gravity="fill_horizontal"
android:text="@string/string_5"/>
<Button
app:layout_columnSpan="2"
android:layout_gravity="fill_horizontal"
android:text="@string/string_6"/>
<android.support.v7.widget.Space
app:layout_column="0"
android:layout_width="36dp"
/>
<android.support.v7.widget.Space
android:layout_width="36dp"
/>
<android.support.v7.widget.Space
android:layout_width="36dp"
/>
<android.support.v7.widget.Space
android:layout_width="36dp"
/>
<android.support.v7.widget.Space
android:layout_width="36dp"
/>
<android.support.v7.widget.Space
android:layout_width="36dp"
/>
<android.support.v7.widget.Space
android:layout_width="36dp"
/>
<android.support.v7.widget.Space
android:layout_width="36dp"
/>
</android.support.v7.widget.GridLayout>
Ich musste die <Space>
Elemente einführen , um sicherzustellen, dass jede Spalte eine Mindestbreite hatte, sonst hätte ich eine Reihe von Spalten mit der Breite Null.
Aber selbst mit ihnen verstehe ich Folgendes:
Vor allem:
Trotzdem
android:layout_gravity="fill_horizontal"
füllen meine Widgets mit Spaltenbereichen die übergreifenden Spalten nicht ausTrotz der
android:layout_rowSpan
Werte erstreckt sich nichts über Zeilen
Kann jemand das Diagramm aus dem Blog-Beitrag mit einem reproduzieren GridLayout
?
Vielen Dank!
android
android-gridlayout
CommonsWare
quelle
quelle
Antworten:
Es fühlt sich ziemlich hackig an, aber ich habe es geschafft, das richtige Aussehen zu erhalten, indem ich eine zusätzliche Spalte und Zeile hinzugefügt habe, die über das hinausgeht, was benötigt wird. Dann füllte ich die zusätzliche Spalte mit einem Leerzeichen in jeder Zeile, die eine Höhe definiert, und füllte die zusätzliche Zeile mit einem Leerzeichen in jeder Spalte, die eine Breite definiert. Für zusätzliche Flexibilität stelle ich mir vor, dass diese Space-Größen im Code festgelegt werden könnten, um etwas Ähnliches wie Gewichte bereitzustellen. Ich habe versucht, einen Screenshot hinzuzufügen, habe aber nicht den erforderlichen Ruf.
quelle
Space
Elementen. Ich habe einen Screenshot für zukünftige Leser hinzugefügt. Vielen Dank!rowCount
Satz auf 8? Wir brauchen 4 Zeilen (die Größe der größtenrowSpan
) plus die zusätzliche,Space
damit das 5 sein sollte. Was fehlt mir?<Gridlayout>
im Gegensatz zu<android.support.v7.widget.GridLayout>
quelle
GridLayout
vom Android-Support-Paket das Layout unterbrochen wird, was darauf hindeutet, dass die beiden nicht vollständig kompatibel sind. Ich hoffe auch sehr, dass es einen Weg gibt, dies zu tun, bei dem die Größe der Widgets nicht fest verdrahtet ist. Ich werde dies ein wenig rollen lassen, um zu sehen, welche anderen Antworten (falls vorhanden) eingehen, aber ich werde Ihre akzeptieren, wenn nichts Besseres auftaucht. Danke noch einmal!android:
Attributeapp:
nicht mithilfe des XML-Namespace des Backports in solche zu konvertieren . Es funktioniert mit dem Backport.Sie müssen sowohl layout_gravity als auch layout_columntWeight für Ihre Spalten festlegen
quelle
Die GridLayout-Bibliothek von Android Support V7 erleichtert die Verteilung von überschüssigem Speicherplatz, indem das Gewichtsprinzip berücksichtigt wird. Stellen Sie sicher, dass die darin enthaltenen Komponenten ein Gewicht oder eine Schwerkraft definieren, um eine Säule zu dehnen. Stellen Sie sicher, dass eine der Komponenten in der Säule kein Gewicht oder keine Schwerkraft definiert, um zu verhindern, dass sich eine Säule dehnt. Denken Sie daran, Abhängigkeiten für diese Bibliothek hinzuzufügen. Fügen Sie com.android.support:gridlayout-v7:25.0.1 in build.gradle hinzu.
quelle
Ab API 21 unterstützt das GridLayout jetzt das Gewicht wie LinearLayout. Für Details siehe den Link unten:
https://stackoverflow.com/a/31089200/1296944
quelle