2011-01-09 12 views
1

Ich verwende eine Spark DropDownlist Komponente. Ich möchte die Größe der Elternkomponente (wo das ausgewählte Element angezeigt wird) klein halten, aber wenn der Benutzer versucht, ein Element auszuwählen, erscheint das Feld mit den Optionen, die ich möchte groß sein, so dass es alle Elemente enthält und wenn ein Element größer als die Größe der übergeordneten Komponente ist, passt es immer noch hinein und der Benutzer muss nicht horizontal scrollen. Ich habe versucht, einen itemrenderer mit verschiedenen Breiten, aber es bringt horizontale Scrolling auf die Auswahl.Wenn ich horizontale Scrolling auf der übergeordneten Komponente (dh s: Dropdown-Liste) deaktivieren, dann sind die Auswahlmöglichkeiten abgeschnitten, ich meine, einige Text wird nicht angezeigt . Können Sie bitte eine mögliche Lösung vorschlagen?Flex Dropdownliste itemrenderer Problem?

Antwort

1

Ich habe es gerade selbst repariert.

Im Grunde habe ich eine customskin für die Dropdownlist und in der benutzerdefinierten Liste angegeben i diese Eigenschaft popupWidthMatchesAnchorWidth = "false‘ für die Popupanchor-Komponente. Und dann habe ich eine itemRenderer mit der Breite, die ich brauchte, und es funktionierte.

Hinweis: Ich habe die benutzerdefinierte Skin für Dropdown-Liste erstellt, basierend auf dem vorhandenen Sking von funken downdownlist und nur diese Eigenschaft geändert.

0

Ich weiß nicht, ob es zählt, aber Sie können Ihre Lösung in das offene Ereignis wie so setzen,

<dropdown open="event.currentTarget.skin.popUp.popUpWidthMatchesAnchorWidth = false;"/> 

ohne eine Haut zu erstellen. Wenn Sie versuchen, es bei der Erstellung aufzurufen, ist das Popup noch nicht erstellt und Sie erhalten einen Fehler. Ich habe einen leichten Blitz bemerkt, bei dem das Dropdown aktualisiert wurde. Aber das ist ein Debug-Build und es ist so gering, dass es im Release-Build möglicherweise nicht auffällt.

Addendum: Ich benutze die Haut immerhin, da der Inhalt sich dynamisch ändert, kann es kleiner sein als das Dropdown. Also habe ich festgestellt, dass wenn popUpWidthMatchesAnchorWidth auf false gesetzt ist, die Popup-Breite standardmäßig auf 140 oder so ähnlich eingestellt ist. Um das zu beheben, habe ich der Breite der Liste eine Bindung hinzugefügt, so dass das Popup-Fenster immer mindestens so breit wie die Liste ist und bei Bedarf breiter wird. Um dies zu tun, fügen Sie die minWidth -Eigenschaft zum Dropdown in der Dropdown-Oberfläche wie folgt hinzu:

<s:Group id="dropDown" maxHeight="184" minHeight="22" minWidth="{hostComponent.width}">