TileList 动态设置每行显示的数目

 动态设置每行显示的数目的关键是计算出每个label的最大长度。

<mx:TileList id="tl" dataProvider="{ac}"  width="100%" height="90%"  rowHeight="40"  paddingLeft="10">
			<mx:itemRenderer>
				<mx:Component>
					<mx:HBox width="100%" height="100%">
						<mx:CheckBox label="{data.name}"  selected="{data.sel}" click="{data.sel=!data.sel}" />
					</mx:HBox>
				</mx:Component>
			</mx:itemRenderer>
		</mx:TileList>

 得到数据源后,对数据源进行处理

 

			private function setListData(isFirst:Boolean):void{
				var maxStrLength:int=0;
				for(var i:int=0;i<ac.length;i++){
					var item:Object=ac.getItemAt(i);
					item.name= item[param.name];
					if(item.name.length>maxStrLength){
						maxStrLength=item.name.length;
					}
					if(isFirst){
						item.sel=false;
					}
					ac.setItemAt(item,i);
				}
				//找到最大的字符串长度 
				var columnWidth:int=maxStrLength*24;
				//大于默认的长度时才重新赋值
				if(columnWidth>tl.columnWidth){
					tl.columnWidth=columnWidth;
				}
			}

 注意:当计算出来的最大长度小于默认值的时候要使用默认值。

你可能感兴趣的:(list)