2

Flex CSS を使用してこの BorderContainer にパディングを設定する方法はありますか?

<s:BorderContainer width="100%" height="100%">
   <s:layout>
      <s:VerticalLayout />
   </s:layout>

   <s:Label text="asdfasdf" />
</s:BorderContainer>

不要な VGroup を追加しないようにしています。CSS でパディングを設定しても効果はありません。(paddingLeft は BorderContainer で定義されたスタイルではないため、私は推測しています。)

s|BorderContainer {
   paddingLeft: 10;
}

CSS でレイアウトのプロパティを変更する方法はありますか? たくさんの場所でパディングをハードコーディングする必要はありません。

4

2 に答える 2

1

カスタム スタイルを BorderContainer のスキンに追加できます。このようなもの:

override protected function updateDisplayList(unscaledWidth:Number,
                                              unscaledHeight:Number):void {
    super.updateDisplayList(unscaledWidth, unscaledHeight);

    var paddingLeft:* = getStyle('paddingLeft');

    elementToPad.left = paddingLeft;
    //or
    layoutToPad.paddingLeft = paddingLeft;
    //or
    elementToPad.setStyle('paddingLeft', paddingLeft);
    //depending on what kind of element you wish to pad
}

そうすれば、単一のスキン クラスを使用して、CSS を介してさまざまなパディングを適用でき、コードの重複を避けることができます。
唯一の欠点は、ホスト コンポーネントが追加したスタイルを認識しないため、IDE サポートが得られないことです。MXML でスタイルを設定しようとすると、コンパイラはエラーをスローしますが、それは最初に回避しようとしていたことです。

于 2012-12-20T21:49:32.593 に答える
0

パディングを指定するカスタム スタイルを定義します。

   .myCustomStyle { paddingLeft: 10;}

コードでは、 styleManagerを使用してこのスタイル値を取得し、垂直レイアウト用に設定します。

    <s:layout>
         <s:VerticalLayout paddingLeft= "value got from the style manager"/>
   </s:layout>
于 2012-12-19T07:47:32.660 に答える