Android Stretch-Spalten gleichmäßig in einem TableLayout

73

Ich zeige eine Wertetabelle in meiner Android-Anwendung an und möchte, dass die Spalten in Bezug auf die Größe gleichmäßig verteilt werden, anstatt sie nach Inhalt zu dimensionieren.

Ich habe mit StretchColumns herumgespielt, konnte aber nicht die richtige Kombination finden.

Drahcir
quelle
Was war los mit StretchColumns? Waren einige der Spalten "überfüllt"?
Jeremy Logan
Ich möchte, dass sie alle die gleiche Größe haben, aber sie scheinen unterschiedliche Größen zwischen ihnen zu haben.
Drahcir
1
Ich weiß ... ich versuche herauszufinden, ob eine der Ansichten größer ist als der Bereich, den Sie für die Spalte zuweisen möchten.
Jeremy Logan
Gleich hier versuche ich herauszufinden, wie man die Breite jeder Spalte hart begrenzt und so einstellt, dass sie mit dem Rest gleich ist und der Inhalt jeder Spalte auf ein Maximum ihrer zugewiesenen Breite, aber nicht breiter, gedehnt wird.
Artem Russakovskii

Antworten:

163

Ich hatte das gleiche Problem - ich habe immer nur eine Nummer eingegeben android:stretchColumns, aber Sie müssen alle Spalten eingeben, die gestreckt werden sollen. Wenn Sie also drei Spalten haben, müssen Sie schreiben:

android:stretchColumns="0,1,2"

Oder schreiben:

android:stretchColumns="*"

Dann haben alle Spalten die gleiche Größe. Zur Erinnerung, android:stretchColumnsist ein Attribut für das TableLayoutElement.

Simon
quelle
Ich versuche, 7 col Wert in Android aber dynamisch aus der Klasse anzuzeigen ... aber ich bei der Installation auf dem Android PH. und rund halten ph. es kann nicht Spalte sowie XML statisch strecken.
Siten
1
und wie würden wir das zur Laufzeit machen?
Ewoks
3
UPDATE: pTable.setColumnStretchable (1, true); pTable.setColumnShrinkable (0, true);
Ewoks
Dies scheint wahr zu sein, bis die Spalten häufig ihre Größe ändern
mr5
20

Sie müssen BEIDE android:layout_width="0dip"und android:layout_weight="1"für jede Ansicht innerhalb einer Tabellenzeile festlegen . Ich denke, das funktioniert, weil die Gewichte den Anteil des LEEREN RAUMES in der von den jeweiligen Ansichten verwendeten Zeile bestimmen. Da die Breite aller Ansichten auf eingestellt ist, 0dipist die gesamte Zeile ein leerer Raum, und daher sind bei gleichen Gewichten alle Ansichten den gleichen Anteil der GANZEN Breite zugewiesen.

Linitbuff
quelle
4

Verwenden Sie die android:layout_weightfür die Spalten

Meriam
quelle
1

Sie steuern die Größe der Spalten anhand der Größe ihres Inhalts. Wenn Sie möchten, dass alle die gleiche Größe haben, richten Sie dies über android:layout_widthin den entsprechenden Zellen ein.

CommonsWare
quelle
3
Wenn der Inhalt dynamisch ist und ich nicht weiß, dass die Größe des Layouts nicht funktioniert.
Gibt
-1

Wer immer noch nach einer Lösung sucht, hat für mich das Setzen von schrumpf- und dehnbaren Säulen den Trick getan. Ich hatte so ziemlich das gleiche Problem wie OP.

FDIM
quelle
Für mich kombiniert es Ihre Antwort + die Antwort von Linitbuff miteinander.
tom_mai78101