Die beste Methode zur Größenanpassung von Containern in Flex, um den expliziten Dimensionen der übergeordneten Container zu folgen

7

Ich stoße seit fast einem Jahr auf dieses Problem mit Flex und jedes Mal arbeite ich eine schnelle Hack-Lösung, die vorerst funktioniert. Ich würde gerne sehen, ob jemand eine bessere Idee hat.

Hier sind die Bedingungen eines Problems:

%Vor%

Das Problem ist, dass die VBox im Gegensatz zu dem, was ich gerne machen würde, IMMER so erweitert wird, dass sie den darin enthaltenen Inhalt aufnimmt, anstatt sich an die explizite Höhe des Elternteils zu halten und eine Bildlaufleiste zu erstellen.

Meine Lösung bestand darin, einen Verweis auf den übergeordneten Code fest zu codieren (oder wie weit die Anzeigeliste auch sein muss, um einen explizit gesetzten Wert im Gegensatz zu einem Prozentsatz zu finden).

Ich habe sogar darüber nachgedacht, dies in einer Utility-Klasse zu verwenden:

%Vor%

Bitte sagen Sie mir, es gibt einen besseren Weg.

    
Aaron 28.10.2008, 23:46
quelle

5 Antworten

8

Sie müssen den "autoLayout" -Parameter auf der VBox als Dokumentation verwenden, sagen:

"Standardmäßig ist die Größe des VBox-Containers groß genug, um das Bild in Originalgröße zu halten. Wenn Sie Layoutaktualisierungen deaktivieren und den Zoom-Effekt verwenden, um das Bild zu vergrößern, oder den Move-Effekt verwenden, um das Bild neu zu positionieren, reicht das Bild möglicherweise über die Grenzen des VBox-Containers hinaus.

Sie legen die autoLayout -Eigenschaft auf false fest, so dass der VBox-Container nicht die Größe des Bilds ändert.Wenn das Image auf eine Größe wächst, die über die Grenzen des VBox-Containers hinausreicht, fügt der Container Bildlaufleisten hinzu und schneidet das Bild an seine Grenzen.

Ich hoffe, dass dir das weiterhilft.

    
netsuo 29.10.2008, 10:40
quelle
13

minHeight = 0 ist alles, was Sie tun müssen.

Dies weist die VBox an, die Maße der Kinder zu ignorieren, wenn sie sich selbst bemaßt, und berechnet stattdessen ihre Höhe basierend auf ihren eigenen / ihren Eltern-Beschränkungen. Stellen Sie alles andere wie gewohnt ein, scrollen Sie und alles andere wird perfekt funktionieren.

Vor einem Jahr haben wir hier einen Tag verbracht - es ist nicht intuitiv, sie hätten die Immobilie wahrscheinlich besser benennen können. Hoffe das spart euch einige Zeit ...

    
Yarin Kessler 17.12.2008 16:32
quelle
2

AutoLayout = false scheint nur zu verhindern, dass das Layout erneut ausgeführt wird, wenn sich die Größe der Kinder ändert . Wenn Sie jedoch untergeordnete Objekte hinzufügen oder entfernen, wird das Layout trotzdem erneut ausgeführt.

Wenn minHeight = 0 gesetzt wird, wird die (äußere) Größe der VBox tatsächlich von der Größe und Anzahl der Kinder getrennt, was ich wollte.

Durch den Flex-Quellcode schleichen Ich habe den Mechanismus nicht gesehen, durch den die Einstellung von minHeight = 0 so funktioniert hat, wie ich es wollte, also grüße ich Yarin, um es zu entdecken. Danke!

    
Dave 06.01.2009 17:54
quelle
1

Legen Sie die Eigenschaften Ihres Containers fest:

%Vor%

Dann sollte Ihre VBox automatisch abgeschnitten werden, wenn sie percentHeight = 100 ;

hat

Funktioniert für mich in Flex 3.

Wenn Sie wirklich schick werden müssen, können Sie den scrollRect für Objekte festlegen:

%Vor%

je nachdem, was Sie tun müssen.

    
Glenn 06.11.2008 01:13
quelle
0

Tatsächlich hat uns Yarin Kessler die einzig richtige Antwort gegeben (Leider habe ich nicht die Rechte, seinen Beitrag zu kommentieren, deshalb mache ich es hier).

Wenn Ihr HBox-Format auf einem Prozentwert basiert, hoffen Sie, dass nur sein Container seine Größe beeinflusst. Das ist falsch, es gibt eine andere Regel, eine stärkere. Es ist die Tatsache, dass ein Container (welcher HBox ist) eine minimale Größe hat, welche die Standardgrößen / expliziten Größen seiner eigenen childs Komponenten hinzufügt.

Wenn also Ihr Prozentwert zu einem Wert führt, der kleiner als die minimale Größe ist, gewinnt die minimale Größe und wird auf die HBox angewendet. Da die HBox alle untergeordneten Elemente anzeigt, sind keine Bildlaufleisten erforderlich.

Also mit:

%Vor%

ist so, als würde man der HBox sagen, dass ihre minimale Größe 0 ist, statt ihrer Standardgrößen. Sie definieren es neu und auf diese Weise ist die minimale Größe kleiner als der Prozentwert und verliert den Kampf.

Der einzige Satz, den ich in der Adobe-Dokumentation gefunden habe, um dies zu erklären, ist folgender:

  

Eine prozentuale Containergröße ist beratend. Flex macht den Behälter groß genug, um seine Kinder in ihren Mindestgrößen zu halten.

Hoffe, ich machte mich klar,

(Bitte korrigieren Sie meine falschen englischen Sätze ...)

    
user1919265 12.02.2013 13:47
quelle

Tags und Links