Может ли список искр Flex иметь список элементов шириной 100%? - PullRequest
1 голос
/ 22 марта 2011

Это странно для меня, но я также новичок в Spark.У меня есть класс List с itemrenderer.Как я могу заставить элементендеров разделить ширину списка между ними?Обычно я думаю, что это будет легко, если дать рендерерам ширину в процентах, но это не работает.Есть идеи?

Применение:

<?xml version="1.0" encoding="utf-8"?>
<s:Application 
    minHeight="600"
    minWidth="955"
    xmlns:fx="http://ns.adobe.com/mxml/2009"
    xmlns:s="library://ns.adobe.com/flex/spark"
    xmlns:mx="library://ns.adobe.com/flex/mx">
<fx:Declarations>
    <s:ArrayCollection id="dta">
        <fx:Object 
                label="one" />
        <fx:Object 
                label="two" />
        <fx:Object 
                label="three" />
        <fx:Object 
                label="four" />
    </s:ArrayCollection>
</fx:Declarations>

<s:List 
        width="100%"
        borderColor="red"
        dataProvider="{dta}"
        xmlns:fx="http://ns.adobe.com/mxml/2009"
        xmlns:s="library://ns.adobe.com/flex/spark"
        xmlns:mx="library://ns.adobe.com/flex/mx"
        itemRenderer="ProgressIndicatorItemRenderer">

    <s:layout>
        <s:HorizontalLayout gap="0" />
    </s:layout>
</s:List>
</s:Application>

Itemrenderer:

<?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer 
    width="100%"
    xmlns:fx="http://ns.adobe.com/mxml/2009"
    xmlns:s="library://ns.adobe.com/flex/spark"
    xmlns:mx="library://ns.adobe.com/flex/mx"
    autoDrawBackground="false"
    showsCaret="false">

<s:states>
    <s:State name="normal" />
    <s:State name="selected" />
    <s:State name="done" />
</s:states>

<s:Rect id="progressIndicatorBackground"
        left="0" right="0" top="0" bottom="0">
    <s:fill>
        <s:SolidColor 
                color.done="0xCCCCCC"
                color.normal="0xCCCCCC"
                color.selected="0xF6A139"
                alpha="1" />
    </s:fill>
</s:Rect>

<s:Label 
        width="100%"
        text="{data.label}" />

 </s:ItemRenderer>

1 Ответ

6 голосов
/ 22 марта 2011

Я думаю, вам просто не хватает некоторых свойств самого макета:

<s:List width="100%" useVirtualLayout="false" borderColor="red" dataProvider="{ dta }"
    itemRenderer="ProgressIndicatorItemRenderer">

    <s:layout>
        <s:HorizontalLayout gap="0" requestedColumnCount="-1" requestedMinColumnCount="-1" variableColumnWidth="true" />
    </s:layout>

</s:List>

Установка переменной variableColumnWidth на true и useVirtualLayout на false должна решить вашу проблему. Для RequestedColumnCount и requiredMinColumnCount по умолчанию установлено значение -1, но их следует явно установить:)

Надеюсь, приведенный выше код поможет.

...