Wenige Benutzer meiner Flex 4.6 Webanwendung beschweren sich, dass der mx.controls.PopUpButton in der rechten unteren Ecke manchmal eine Liste unter öffnet und somit unbrauchbar ist (ich kann nicht reproduzieren dass ich - wahrscheinlich eine unglückliche Kombination ihres Flash-Player und/oder Schriftgrößeneinstellung)Wie kann sichergestellt werden, dass das Popup immer über dem PopUpButton angezeigt wird? Mit Testfall und Screenshot
Wie konnte ich sicherstellen, dass die popUp Komponente (in meinem Fall ist es ein spark.components.List) immer oben eröffnet der PopUpButton?
Ich vermute, dass ich eine Haut basierend auf mx.skins.halo.PopUpButtonSkin erstellen und es meinem PopUpButton zuweisen soll? Und sollte ich wahrscheinlich die PopUpPosition.ABOVE Konstante zusammen mit dem PopUpAnchor verwenden?
Aber ich bin nicht sicher, wie man es zusammensetzt - kann jemand bitte einige Anweisungen teilen?
ich einen Screenshot und ein einfaches Text.mxml vorbereitet haben:
<?xml version="1.0" encoding="utf-8"?>
<s:Application
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
creationComplete="init()">
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
import mx.collections.ArrayCollection;
import spark.components.List;
[Bindable]
private var _data:ArrayCollection = new ArrayCollection();
[Bindable]
private var _list:List = new List();
public function init():void {
_data.addItem({label: "One"});
_data.addItem({label: "Tow"});
_data.addItem({label: "Three"});
_data.addItem({label: "Four"});
_data.addItem({label: "Five"});
_list.dataProvider = _data;
_list.setStyle('fontSize', 36);
}
]]>
</fx:Script>
<mx:PopUpButton right="10" bottom="10" fontSize="24" popUp="{_list}"/>
</s:Application>
UPDATE:
ich eine Lösung von Simon Bailey MX ComboBox Open Direction Bug - Alternative Solution und es ist eine Art gefunden haben funktioniert, verhindert aber leider, dass ich mein benutzerdefiniertes Ereignis nach dem Klicken auf die Schaltfläche "Haupt" (nicht "Pfeil") senden kann.
Auch habe ich bei the PopUpButton.as source code sah und sich fragen, ob vielleicht die Höhe der Liste 0 ist, während es dort geprüft wird:
private function displayPopUp(show:Boolean):void
{
......
// XXX I suspect the _popUp.height below is 0
// XXX for the users having the trouble
if (show)
{
if (point.y + _popUp.height > screen.bottom &&
point.y > (screen.top + height + _popUp.height))
{
// PopUp will go below the bottom of the stage
// and be clipped. Instead, have it grow up.
point.y -= (unscaledHeight + _popUp.height + 2*popUpGap);
initY = -_popUp.height;
}
Ich kann immer noch nicht den Fehler reproduzieren mich, meine Benutzer aren‘ t sehr hilfreich (meist ältere Leute, spielen my card game). Ich habe in Adobe JIRA gesucht, konnte aber einen solchen Fehler nicht finden.
Ich frage mich, ob es eine Möglichkeit gibt, diese Methode kurzzuschließen, um das Öffnen des popUp über dem PopUpButton zu erzwingen.
Oder wenn ich die _list in einen Container setzen sollte ...
Ich kann nicht auf die DropDownList klicken ("drücken Sie es wie eine Taste - um ein Ereignis zu senden), nachdem ich einen Wert ausgewählt habe - oder kann ich? –
Nein, das glaube ich nicht. Wählen Sie "Auswählen", indem Sie auf die rechte Seite klicken und dann "drücken", indem Sie auf die linke Seite klicken? Das scheint mir verwirrend. Vielleicht macht es Ihr tatsächlicher Text in der Liste deutlicher, wie es funktioniert. – joshtynjala
Ja, genau so benutze ich es. Kann ich etwas erreichen, indem ich "mx_internal function displayPopUp()" überschreibe? –