链接栏未突出显示所选索引
Linkbar is not hilighting the selected index
我有一个未突出显示所选 link 的链接栏。 LinkBar 有问题吗?
这是我的代码:
<mx:LinkBar id="languageTypeButtons"
selectedIndex="0"
itemClick="languageType_changeHandler(null)"
dataProvider="{languageTypes}">
</mx:LinkBar>
<s:ArrayList id="languageTypes">
<fx:String>{MXML}</fx:String>
<fx:String>{HTML}</fx:String>
<fx:String>{ANDROID}</fx:String>
</s:ArrayList>
public static const HTML:String = "HTML";
public static const MXML:String = "MXML";
public static const ANDROID:String = "Android";
我使用的是 Flex 4.6,并且混合了 Spark 组件和 mx 组件。如果我在 LinkBar MXML 中设置 selectedIndex,那么它会在视觉上停留在该项目上。它以编程方式发生变化,并且 selectedIndex 显示正确的值。
更新:
无法弄清楚这一点,所以我正在使用 ButtonBar。不幸的是,如果您不设置 dataProvider 或将其设置为没有项目的 ArrayList,ButtonBar 似乎会挂起整个应用程序。
您必须使用 ViewStack 作为数据提供者:
<s:VGroup>
<mx:LinkBar id="languageTypeButtons"
selectedIndex="0"
itemClick="languageType_changeHandler()"
dataProvider="{languageTypesViewStack}">
</mx:LinkBar>
<mx:ViewStack id="languageTypesViewStack" borderStyle="solid" width="100%" height="80%">
<mx:Canvas id="htmlID" backgroundColor="#FFFFCC" label="{HTML}" width="100%" height="100%">
<mx:Label text="HTML Selected" color="#000000"/>
</mx:Canvas>
<mx:Canvas id="mxmlID" backgroundColor="#CCFFFF" label="{MXML}" width="100%" height="100%">
<mx:Label text="MXML Selected" color="#000000"/>
</mx:Canvas>
<mx:Canvas id="AndroidID" backgroundColor="#FFCCFF" label="{ANDROID}" width="100%" height="100%">
<mx:Label text="Android Selected" color="#000000"/>
</mx:Canvas>
</mx:ViewStack>
</s:VGroup>
如果您真的想将字符串 ArrayList 用作数据提供者,那么这里有一个解决方法:
<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" >
<fx:Script><![CDATA[
public static const HTML:String = "HTML";
public static const MXML:String = "MXML";
public static const ANDROID:String = "Android";
private function languageType_changeHandler():void
{
var tempSelectedIndex:Number = languageTypeButtons.selectedIndex;
for (var i = 0; i < languageTypes.length; i++)
{
languageTypeButtons.selectedIndex = i
languageTypeButtons.validateNow();
}
languageTypeButtons.selectedIndex = tempSelectedIndex;
}
]]></fx:Script>
<fx:Declarations>
<s:ArrayList id="languageTypes">
<fx:String>{MXML}</fx:String>
<fx:String>{HTML}</fx:String>
<fx:String>{ANDROID}</fx:String>
</s:ArrayList>
</fx:Declarations>
<mx:LinkBar id="languageTypeButtons"
selectedIndex="0"
itemClick="languageType_changeHandler()"
dataProvider="{languageTypes}">
</mx:LinkBar>
</s:Application>
我有一个未突出显示所选 link 的链接栏。 LinkBar 有问题吗?
这是我的代码:
<mx:LinkBar id="languageTypeButtons"
selectedIndex="0"
itemClick="languageType_changeHandler(null)"
dataProvider="{languageTypes}">
</mx:LinkBar>
<s:ArrayList id="languageTypes">
<fx:String>{MXML}</fx:String>
<fx:String>{HTML}</fx:String>
<fx:String>{ANDROID}</fx:String>
</s:ArrayList>
public static const HTML:String = "HTML";
public static const MXML:String = "MXML";
public static const ANDROID:String = "Android";
我使用的是 Flex 4.6,并且混合了 Spark 组件和 mx 组件。如果我在 LinkBar MXML 中设置 selectedIndex,那么它会在视觉上停留在该项目上。它以编程方式发生变化,并且 selectedIndex 显示正确的值。
更新:
无法弄清楚这一点,所以我正在使用 ButtonBar。不幸的是,如果您不设置 dataProvider 或将其设置为没有项目的 ArrayList,ButtonBar 似乎会挂起整个应用程序。
您必须使用 ViewStack 作为数据提供者:
<s:VGroup>
<mx:LinkBar id="languageTypeButtons"
selectedIndex="0"
itemClick="languageType_changeHandler()"
dataProvider="{languageTypesViewStack}">
</mx:LinkBar>
<mx:ViewStack id="languageTypesViewStack" borderStyle="solid" width="100%" height="80%">
<mx:Canvas id="htmlID" backgroundColor="#FFFFCC" label="{HTML}" width="100%" height="100%">
<mx:Label text="HTML Selected" color="#000000"/>
</mx:Canvas>
<mx:Canvas id="mxmlID" backgroundColor="#CCFFFF" label="{MXML}" width="100%" height="100%">
<mx:Label text="MXML Selected" color="#000000"/>
</mx:Canvas>
<mx:Canvas id="AndroidID" backgroundColor="#FFCCFF" label="{ANDROID}" width="100%" height="100%">
<mx:Label text="Android Selected" color="#000000"/>
</mx:Canvas>
</mx:ViewStack>
</s:VGroup>
如果您真的想将字符串 ArrayList 用作数据提供者,那么这里有一个解决方法:
<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" >
<fx:Script><![CDATA[
public static const HTML:String = "HTML";
public static const MXML:String = "MXML";
public static const ANDROID:String = "Android";
private function languageType_changeHandler():void
{
var tempSelectedIndex:Number = languageTypeButtons.selectedIndex;
for (var i = 0; i < languageTypes.length; i++)
{
languageTypeButtons.selectedIndex = i
languageTypeButtons.validateNow();
}
languageTypeButtons.selectedIndex = tempSelectedIndex;
}
]]></fx:Script>
<fx:Declarations>
<s:ArrayList id="languageTypes">
<fx:String>{MXML}</fx:String>
<fx:String>{HTML}</fx:String>
<fx:String>{ANDROID}</fx:String>
</s:ArrayList>
</fx:Declarations>
<mx:LinkBar id="languageTypeButtons"
selectedIndex="0"
itemClick="languageType_changeHandler()"
dataProvider="{languageTypes}">
</mx:LinkBar>
</s:Application>