Wie kann ich den Wert für das Attribut layout_weight
für die Schaltfläche in Android dynamisch aus Java-Code festlegen ?
244
Wie kann ich den Wert für das Attribut layout_weight
für die Schaltfläche in Android dynamisch aus Java-Code festlegen ?
Antworten:
Sie können es als Teil des
LinearLayout.LayoutParams
Konstruktors übergeben:Der letzte Parameter ist das Gewicht.
quelle
param = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, (float) 1.0);
1f
wenn es keine Dezimalstellen gibtRelative
Verwendung
LinearLayout.LayoutParams
:EDIT: Ah, Erichs Antwort ist einfacher!
quelle
FILL_PARENT
wurde veraltet undMATCH_PARENT
sollte stattdessen verwendet werden.MATCH_PARENT
kann es anstelle vonFILL_PARENT
sogar auf älteren Geräten verwendet werden.FILL_PARENT
vs.MATCH_PARENT
.Wenn Sie Ihre Ansicht bereits in Ihrer Layoutdatei (XML) definiert haben und das Gewicht nur programmgesteuert ändern möchten, ist dies besser
new a LayoutParams überschreibt andere in Ihrer XML-Datei definierte Parameter wie Ränder, oder Sie müssen alle in LayoutParams angeben.
quelle
Wenn der Konstruktor mit Breite, Höhe und Gewicht nicht funktioniert, versuchen Sie, den Konstruktor mit Breite und Höhe zu verwenden. Und dann das Gewicht manuell einstellen.
Wenn Sie möchten, dass die Breite entsprechend dem Gewicht festgelegt wird, setzen Sie die Breite im Konstruktor auf 0. Gleiches gilt für die Höhe. Der folgende Code funktioniert für mich.
quelle
Wenn ich jemanden suche, der eine Antwort sucht, benutze dies:
Wenn Sie Ihr Layout aus einer XML-Datei initialisieren, ist dies viel praktischer als die Bereitstellung neuer Layoutparameter für das lineare Layout.
quelle
layout_weight
bereits angelegt wurde, müssen SieView.requestLayout()
zum Aktualisieren aufrufen .Jeder von
LinearLayout.LayoutParams
undTableLayout.LayoutParams
arbeitete für mich, für Knöpfe ist der richtigeTableRow.LayoutParams
. Das ist:Über die Verwendung
MATCH_PARENT
oderWRAP_CONTENT
gleich sein.quelle
FILL_PARENT
wurde veraltet undMATCH_PARENT
sollte stattdessen verwendet werden.LayoutParams
des direkten Elternteils an. Ich gehe davon aus, dass Sie einen Absturz hatten, bei dem versucht wurde, ihnLinearLayout.LayoutParams
ohne die Eltern zu verwendenLinearLayout
.Wenn Sie Ihre Ansicht bereits in der Layoutdatei (XML) definiert haben und das Gewicht nur grammatikalisch ändern möchten, werden beim Erstellen neuer LayoutParams andere in Ihrer XML-Datei definierte Parameter überschrieben.
Sie sollten also zuerst "getLayoutParams" und dann setLayoutParams verwenden
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) mButton.getLayoutParams(); params.weight = 4f; mButton.setLayoutParams(params);
quelle
Wenn
layoutparams
bereits definiert (in XML oder dynamisch), ist hier ein Einzeiler:quelle
Mit Kotlin können Sie Folgendes tun:
quelle