Ich weiß, wie man die Breite und die Höhe einer Ansicht mit LayoutParams
über das Folgende einstellen kann:
Wenn ich nun die gleiche Höhe und Breite auf eine andere Schaltfläche anwenden möchte, muss ich ein anderes LayoutParam erstellen oder das vorhandene überschreiben, wie hier:
%Vor%Ich habe ungefähr 50 Knöpfe in meiner Anwendung und ich bezweifle, dass es als guter Code gilt, alle Params zu bekommen, um nur die Breite und die Höhe zu verändern - ich möchte die restlichen Params behalten (toLeftOf, [...] ).
Gibt es eine Möglichkeit, NUR die Breite und die Höhe der Parameter zu ändern, aber den Rest der Parameter beizubehalten? Es sieht dann so aus:
%Vor%Vielen Dank im Voraus.
Der ganze Zweck der Methode getLayoutParams()
ist es, die existierenden aus einem View
zu nehmen (das alle Regeln und Sachen enthält). Dann können Sie bestimmte Parameter dieser LayoutParams
ändern und den Rest unverändert lassen. Daher müssen Sie aufrufen, um getLayoutParams()
zu ändern und das zurückgegebene Objekt zu ändern, wenn sich Ihre Views
in den Einstellungen in XML unterscheiden. Falls sie genau die gleichen Regeln in XML verwenden würden, könntest du es genauso machen, wie du es in deinem letzten Beispiel geschrieben hast.
Ich rate Ihnen, eine Methode zu erstellen, die den gesamten Prozess der Aktualisierung von LayoutParams
umschließt. Wie so:
Das würde Ihren Code erheblich vereinfachen, denn dann können Sie diese Methode für jeden einzelnen Ihrer Buttons aufrufen, mit den richtigen Werten für Breite und Höhe.
%Vor% Wie andere Antworten schon sagten: Sie müssen getLayoutParams()
, das zurückgegebene LayoutParams-Objekt und setLayoutParams()
damit ändern (ob dies eine vernünftige API ist, steht zur Debatte).
Aber wie comm1x sagt, kann Kotlin das wirklich einfach und leicht lesbar machen.
Wie wäre es damit:
%Vor%Dies erfordert eine Erweiterungsfunktion:
%Vor% Wenn Sie dieselben Layoutparameter auf mehrere View
s anwenden möchten, können Sie Folgendes tun:
PS. Kotlin ist nichts weniger als fantastisch.
Wenn Sie verschiedene Größen für verschiedene Komponenten festlegen möchten, empfehle ich Ihnen, dies innerhalb von XML zu tun, anstatt es innerhalb der JAVA zu tun. Sie erhalten viel bessere Ergebnisse und es wird optimal sein.