Android Layout-Parameter ändern NUR Breite und Höhe

8

Ich weiß, wie man die Breite und die Höhe einer Ansicht mit LayoutParams über das Folgende einstellen kann:

%Vor%

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.

    
user2875404 02.02.2015, 01:09
quelle

4 Antworten

25

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:

%Vor%

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%     
Bartek Lipinski 02.02.2015, 12:32
quelle
1

In Kotlin können wir es kürzer und eleganter machen:

%Vor%     
comm1x 23.02.2018 21:06
quelle
1

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:

%Vor%

PS. Kotlin ist nichts weniger als fantastisch.

    
aaaidan 01.03.2018 03:41
quelle
-1

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.

    
rencsaridogan 02.02.2015 09:25
quelle

Tags und Links