0

開発者は、Flex コンポーネントのレンダリング全体を書き直すことなく、Flex コンポーネントの 1 つの部分だけにスキンを適用するにはどうすればよいでしょうか?

ESRI の ArcGIS Flex Viewer (3.0) には WidgetTemplate コンテナーがあり、コンテナー全体のレンダリングを担当することなく、一部だけをスキニングしたいと考えています。たとえば、このコンテナのスキン パーツをスキニングしたいだけです。

[SkinPart(required="false")]
public var header:Group;

ヘッダーの埋め込みラベルの色を好きな色に設定できるようにします。

したがって、PrintWidgetSkin.mxmlという次のスキンを作成しました。

<?xml version="1.0" encoding="utf-8"?>
<s:Skin xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    xmlns:mx="library://ns.adobe.com/flex/mx">
   <!-- host component -->
   <fx:Metadata>
       [HostComponent("com.esri.viewer.WidgetTemplate")]
   </fx:Metadata>

   <!-- states -->
   <s:states>
       <s:State name="open" />
       <s:State name="minimized" />
       <s:State name="closed" />
       <s:State name="disabled" />
       <s:State name="normal" />
   </s:states>


   <s:Group id="header">
       <s:Label color="0x000000" />
   </s:Group>
</s:Skin>

WidgetTemplate インスタンスのskinClassプロパティをこのスキンに割り当てます。

<viewer:WidgetTemplate id="wTemplate"
                       width="345" height="285"
                       minWidth="345"
                       minHeight="285"
                       styleName="fontstyle"
                       accentColor="0x33FF66"
                       color="0x33FF66"
                       skinClass="widgets.Print.PrintWidgetSkin">
</viewer:WidgetTemplate>

ただし、この skinClass が割り当てられている場合、コンテナーはまったく表示されません。

明確にするために、1 つのスキン パーツだけをスキンし、他のスキン パーツとコンテナーの残りの部分を通常どおりにレンダリングすることはできますか?

私の主な情報源は、スキニングに関する Adob​​e のページです: About Spark Skins

4

1 に答える 1

1

作成したスキンで考慮されていないcom.esri.viewer.WidgetTemplate.asのスキンパーツがいくつかあるため、表示されません。

1 つのウィジェットのヘッダーのラベルの色だけを変更したい場合は、まったく新しいスキンを作成するのではなく、印刷ウィジェットの creationComplete ハンドラーで色を変更することをお勧めします。

また、com.esri.viewer.skins.WidgetTemplateSkin.mxmlを参照して、その他のアイデアやグローバル ウィジェット スタイルの変更を確認してください。

于 2012-11-13T05:22:14.533 に答える