Flex Spark DropDownList - добавить разделитель между элементами - PullRequest
1 голос
/ 20 января 2012

Я пытаюсь создать раскрывающийся список, который может отображать как прошлое состояние, так и возможное состояние для клиента.

Но я хочу добавить разделитель между прошлым и возможным состоянием.

На самом деле для этого я добавляю элемент типа "-----" в поставщик данных.

Но внешний вид не очень хороший, и этот предмет можно выбрать.

Мой идеальный подход такой:

Так как же лучше?

Любойпредложения будут оценены!

Ответы [ 2 ]

0 голосов
/ 21 января 2012

Я бы использовал пользовательский ItemRenderer.На последнем предмете вы можете скрыть строку.Однако с этим кодом вы получите предупреждение о привязке данных, что владелец не может быть привязан.

<s:itemRenderer>
    <fx:Component>
        <s:ItemRenderer width="100%" height="100%" 
                        autoDrawBackground="true">
            <fx:Script>
                <![CDATA[
                    import spark.components.supportClasses.ListBase;
                ]]>
            </fx:Script>
            <s:states>
                <s:State name="normal"/>
                <s:State name="down"/>
                <s:State name="hovered"/>
                <s:State name="selected"/>
                <s:State name="dragging"/>
                <s:State name="normalAndShowCaret"/>
                <s:State name="hoveredAndShowCaret"/>
                <s:State name="selectedAndShowCaret"/>
            </s:states>


            <s:Line width="100%" top="2" visible="{itemIndex==outerDocument.lengthOfFirstItems-1}">
                <s:stroke>
                    <s:SolidColorStroke weight="1" caps="square"/>
                </s:stroke>
            </s:Line>

            <s:Group top="8" left="2" right="2" bottom="2" width="100%" height="100%">
                <s:Label id="labelDisplay" verticalCenter="1" horizontalCenter="0" />
            </s:Group>
        </s:ItemRenderer>
    </fx:Component>
</s:itemRenderer>

В вашем документе создайте переменную с именем lengthOfFirstItems типа int.Я полагаю, у вас есть два массива?Один для верхних предметов и один для нижних?Если это так, то добавьте второй массив к первому (или создайте третий из них).Перед объединением ваших массивов установите lengthOfFirstItems в длину первого набора элементов.Таким образом, используя изображение в качестве примера, длина будет 2, так как есть два элемента, ваша строка, а затем остальные элементы.

// position of end of first array. must be public to be accessible by outerDocument
public var lengthOfFirstItems:int = -1;

// get length of first array
lengthOfFirstItems = firstArray.length;

В этом примере строка будет видна в последнем рядупервый массив предметов.Вам, вероятно, придется скорректировать код, так как его частью является псевдокод.

0 голосов
/ 20 января 2012

Единственный способ, о котором я могу подумать, - это создать собственный скин для DropDownList.

У меня никогда не было скинов с этого компонента, поэтому я не могу дать вам более подробную информацию, но если вы используете Flash Builder, очень легко создавать новые скины для компонента: просто щелкните значок кистью и шестеренкой справа селектора «Skin» и выберите Create Skin . Затем вы можете настроить все, как выглядит компонент.

...