我已经在 flex 4 中实现了一个无铬窗口应用程序。但是这样做我注意到所有的最大化、最小化甚至拖动窗口的能力都消失了。我需要能够拖动窗口。我已经做了很多谷歌搜索,但无法提出任何建议。有人可以指出我正确的方向。
提前致谢。
我已经在 flex 4 中实现了一个无铬窗口应用程序。但是这样做我注意到所有的最大化、最小化甚至拖动窗口的能力都消失了。我需要能够拖动窗口。我已经做了很多谷歌搜索,但无法提出任何建议。有人可以指出我正确的方向。
提前致谢。
您必须为 WindowedApplication 创建自定义外观。如果你查看 WindowedApplication 的代码,你会发现:
[SkinPart (required="false")]
public var titleBar:TitleBar;
这意味着您可以将 TitleBar 添加到皮肤,但您不必这样做。事实上,默认的WindowedApplicationSkin没有标题栏。
在自定义皮肤中包含TitleBar将自动为您提供您所追求的拖动行为。默认的TitleBarSkin带有常规窗口按钮(最小化、最大化、关闭),因此您可能也想在此处创建自定义皮肤。如果您不需要它们,则没有按钮。
这是一个精简的例子。
WindowedApplication 的自定义皮肤(只有白色背景和 TitleBar):
<s:Skin xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark" >
<fx:Metadata>[HostComponent("Object")]</fx:Metadata>
<s:states>
<s:State name="normal" />
<s:State name="disabled" />
<s:State name="normalAndInactive" />
<s:State name="disabledAndInactive" />
</s:states>
<s:Rect id="backgroundRect" left="0" right="0" top="0" bottom="0" >
<s:fill>
<s:SolidColor id="backgroundFill" color="0xffffff" />
</s:fill>
</s:Rect>
<s:TitleBar left="0" right="0" top="0" height="24"
skinClass="skin.TitleBarSkin" />
<s:Group id="contentGroup" left="0" right="0" top="25" bottom="0" />
</s:Skin>
TitleBar 的自定义外观(只是一个渐变背景和一个关闭按钮):
<s:Skin xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
minHeight="24" >
<fx:Metadata>
[HostComponent("spark.components.windowClasses.TitleBar")]
</fx:Metadata>
<s:states>
<s:State name="normal" />
<s:State name="disabled" />
<s:State name="normalAndMaximized" />
<s:State name="disabledAndMaximized" />
</s:states>
<s:Rect id="background" left="0" right="0" top="0" bottom="0">
<s:fill>
<s:LinearGradient rotation="90">
<s:GradientEntry color="0xFFFFFF" />
<s:GradientEntry color="0xBABABA" />
</s:LinearGradient>
</s:fill>
</s:Rect>
<s:Button id="closeButton" label="close" right="0" verticalCenter="0" />
</s:Skin>
显然,“closeButton”是必需的,因此您必须将其包含在皮肤中。但是,如果您仍然想摆脱它,只需将其 'visible' 和 'includeInLayout' 属性设置为 'false'。