Ich versuche, TableRow
Objekte dynamisch zu erstellen und zu einem hinzuzufügen TableLayout
. Das TableRow
Objekt hat 2 Elemente, a TextView
und a CheckBox
. Für die TextView
Elemente muss das Layoutgewicht auf 1 gesetzt sein, damit die CheckBox
Elemente ganz nach rechts verschoben werden.
Ich kann keine Dokumentation zum programmgesteuerten Festlegen des Layoutgewichts eines TextView
Elements finden.
TextView tv = (TextView) findViewById(R.id.your_textview_inside_the_linearlayout); tv.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 0.1f));
TableRow.LayoutParams
sollte anstelle von verwendet werdenTableLayout.LayoutParams
. Siehe @ Dorjes Antwort.Die Antwort ist, dass Sie TableRow.LayoutParams verwenden müssen, nicht LinearLayout.LayoutParams oder andere LayoutParams.
Die verschiedenen LayoutParams sind nicht austauschbar. Wenn Sie das falsche verwenden, scheint nichts zu passieren. Das übergeordnete Element der Textansicht ist eine Tabellenzeile.
http://developer.android.com/reference/android/widget/TableRow.LayoutParams.html
quelle
LayoutParams
TableRow.LayoutParams
hat den Job auch für mich gemachtIn den früheren Antworten wird das Gewicht an den Konstruktor eines neuen SomeLayoutType.LayoutParams-Objekts übergeben. In vielen Fällen ist es jedoch bequemer, vorhandene Objekte zu verwenden - es hilft, den Umgang mit Parametern zu vermeiden, an denen wir nicht interessiert sind.
Ein Beispiel:
quelle
1f bedeutet als Gewicht = 1; Sie können 2f oder 3f angeben. Ansichten werden entsprechend dem Leerzeichen verschoben
quelle
Stellen Sie einfach Layout-Parameter in diesem Layout wie ein
Parametervariable erstellen
1f ist gewichtsvariabel
Stellen Sie Ihr Widget oder Layout wie ein
quelle
LinearLayout.LayoutParams
Konstruktors. 3. Parameter ist Gewicht. Oder Dokumentation(ODER)
1f wird als Gewicht = 1 bezeichnet; Je nach Bedarf können Sie 2f oder 3f angeben. Die Ansichten werden entsprechend dem Leerzeichen verschoben. Verwenden Sie die Gewichtsumme für "LinearLayout" , um den angegebenen Abstand zwischen Ansichten im linearen Layout festzulegen.
quelle
Dies sollte für Sie funktionieren
quelle
Sie können das Gewicht auch separat wie folgt angeben:
quelle
Diese Arbeit für mich, und ich hoffe, es wird auch für Sie funktionieren
Legen Sie zuerst die LayoutParams für die übergeordnete Ansicht fest:
Stellen Sie dann für die Textansicht (untergeordnetes Element) Folgendes ein:
quelle
Es gibt einen anderen Weg, dies zu tun. Falls Sie nur einen Parameter einstellen müssen, zum Beispiel 'height':
quelle
Nach 4 Stunden Kampf. Schließlich hat dieser Code für mich funktioniert.
3 Spalten befinden sich in einer Reihe.
quelle
Ich hatte ziemlich große Schwierigkeiten mit einer Lösung, die dieser sehr ähnlich war: Ich versuchte, zwei Schaltflächen in einer TableRow zu haben, von denen jede die Hälfte der Bildschirmbreite hatte. Aus irgendeinem Grund würde die linke Taste immer etwa 70% der Breite und die rechte Taste 30% betragen. Das Aufrufen von table_layout.setStretchAllColumns (true) hatte weder Auswirkungen noch das Festlegen der Breite der Schaltfläche auf die Hälfte des Bildschirms oder das Festlegen des Layoutgewichts.
Die Lösung , die ich am Ende mit wurde ein Linearlayout in den TableRows nisten, die hat sich der Wert der Tasten Breite zu berücksichtigen.
quelle
layout_width=fill_parent
, und danach zu tun, setzen dielayout_weight=1
beiden für button1 und button2. Alle Elemente mit fill_parent und layout_weight = 1 erhalten beim Aufblasen die gleiche Größe.