Flex:如何减少组件之间的间距

时间:2010-05-04 09:34:02

标签: flex flex3

如何减少linkBut​​tons和每个linkBut​​ton内的空间?

我已将padding设置为0,但它已经为0。 我只能改变LinkBut​​tons的高度,但我不能用宽度来做,因为文本是动态的。

<mx:Repeater id="bookmarksRepeater" dataProvider="{dataManager.bookmarksList}">
    <mx:HBox>
        <mx:VBox>
        <mx:HBox>
            <mx:Text >
               <mx:text> {String(bookmarksRepeater.currentItem.name)}</mx:text>
            </mx:Text>
            <mx:LinkButton height="16" rollOverColor="#FFA500" label="Visit" />
            <mx:LinkButton height="16" rollOverColor="#FFA500" label="Add" />
            <mx:LinkButton height="16" rollOverColor="#FFA500" label="Save" />
        </mx:HBox>
     <mx:HBox>
        <mx:Repeater id="tagsRepeater" dataProvider="{bookmarksRepeater.currentItem.tags}">
           <mx:LinkButton height="14" color="0x0033CC" rollOverColor="#FFA500" fontSize="8" label="{String(tagsRepeater.currentItem.name)}"/>
     </mx:Repeater>
     </mx:HBox>
    </mx:VBox>
     <mx:Text height="16" color="0x0033CC" fontWeight="bold" >
    <mx:text> {String(bookmarksRepeater.currentItem.popularity)} </mx:text>
       </mx:Text>
    </mx:HBox>
</mx:Repeater> 

2 个答案:

答案 0 :(得分:5)

您的Repeater位于HBox内部,默认设置为水平间距。要删除此间距,请将horizo​​ntalGap设置为0:

 <mx:HBox horizontalGap="0">
    <mx:Repeater id="tagsRepeater" dataProvider="{bookmarksRepeater.currentItem.tags}">
       <mx:LinkButton height="14" color="0x0033CC" rollOverColor="#FFA500" fontSize="8" 
           label="{String(tagsRepeater.currentItem.name)}"/>
    </mx:Repeater>
 </mx:HBox>

答案 1 :(得分:0)

要动态设置LinkBut​​tons的宽度,您可能必须通过覆盖容器类的commitProperties来执行此操作,并为每个LinkBut​​ton计算文本度量标准:

var m:TextLineMetrics = linkBut​​ton.measureText(lb.label);

然后,您应该能够使用计算的指标为每个LinkBut​​ton设置精确的宽度值。

另一种方法是在LinkBut​​ton上侦听labelChanged事件,然后在侦听器中强制重新计算宽度。