4

私は本当にHBoxの答えが必要なだけですが、ここで良い答えが得られれば、VBoxで同様のことをしようとしている人に役立つと思います。これをactionscriptとMXMLの両方で知っておくと便利です。

だから私はいくつかのテキストを左から、いくつかのラジオを右から揃えたいHBoxを持っています。そのようです:

 ___________________________________________________
|                                                   |
|Text                                Yes ()  No()   |
|___________________________________________________|

私は現在、このように、テキストとラジオの間に幅100%の非表示のボックスを配置することでこれを行っています。

 _____ __________________________________ ________________
|     |                                  |                |
|Text | invisible box  percentWidth=100; | Yes ()  No()   |
|_____|__________________________________|________________|

私は、次のように正しく配置された独自のHBoxにラジオを配置したいと思います。

 _____ ________________________________________________________
|     |                                                        |
|Text |                                         Yes ()  No()   |
|_____|________________________________________________________|

いくつかの投稿がhorizo​​ntalAlignプロパティについて話しているのを見たことがありますが、ドキュメントのどこにも見当たりません。

では、どうすればこれを達成できますか?

ありがとう〜mike

4

2 に答える 2

8

VBoxおよびHBoxコンポーネント(Boxから継承されたもの)にプロパティhorizontalAlignとプロパティがあります。verticalAlignこれらは、コンポーネントの子の水平方向と垂直方向の配置を決定します。

サムが言及しているように、私は通常Spacerオブジェクトを使用します。しかし、あなたがやりたいことには、これはうまくいくでしょう。

MXMLでは、次のようなことができます。

<mx:RadioButtonGroup id="yesNoRadioGroup"/>

<mx:HBox id="containingHBox" width="100%">
    <mx:Text id="textElement" width="200" text="lakdfa lkadslkjraklnd kadflk lakdsjlkja lksdlkjdflk jalkdlkjdfslksajdf lkjasdflkjdsalkjds lksdjlkj"/>
    <mx:HBox id="rightAlignedHorizontalContent" width="100%" horizontalAlign="right">
        <mx:RadioButton id="yesRadio" label="Yes" groupName="yesNoRadioGroup"/>
        <mx:RadioButton id="noRadio" label="No" groupName ="yesNoRadioGroup"/>
    </mx:HBox>
</mx:HBox>

セットを含むHBoxにはhorizontalAlign幅の値が必要であることに注意してください。そうでない場合は、子の幅に対応するのに十分な幅しかありません。この場合、配置は重要ではありません。

ASバージョンは次のとおりです。

<mx:Script>
    <![CDATA[
        import mx.controls.RadioButton;
        import mx.controls.RadioButtonGroup;
        import mx.controls.Text;

        private var containingHBox:HBox;
        private var textElement:Text;
        private var rightAlignedHorizontalContent:HBox;
        private var yesNoRadioGroup:RadioButtonGroup; 
        private var yesRadio:RadioButton;
        private var noRadio:RadioButton;

        override protected function createChildren():void
        {
            super.createChildren();

            containingHBox = new HBox();
            containingHBox.percentWidth = 100;

            textElement = new Text();
            textElement.width = 200;
            textElement.text = "lakdfa lkadslkjraklnd kadflk lakdsjlkja lksdlkjdflk jalkdlkjdfslksajdf lkjasdflkjdsalkjds lksdjlkj";

            rightAlignedHorizontalContent = new HBox();
            rightAlignedHorizontalContent.percentWidth = 100;
            rightAlignedHorizontalContent.setStyle("horizontalAlign","right");

            yesNoRadioGroup = new RadioButtonGroup();

            yesRadio = new RadioButton();
            yesRadio.label = "Yes";
            yesRadio.groupName = "yesNoRadioGroup";

            noRadio = new RadioButton();
            noRadio.label = "No";
            noRadio.groupName = "yesNoRadioGroup";


            addChild(containingHBox);

            containingHBox.addChild(textElement);
            containingHBox.addChild(rightAlignedHorizontalContent);

            rightAlignedHorizontalContent.addChild(yesRadio);
            rightAlignedHorizontalContent.addChild(noRadio);
        }
    ]]>
</mx:Script>
于 2010-01-27T22:43:19.890 に答える
4

レイアウトにすでにHBox/VBoxを使用している場合は、スペーサーを使用するのが、特定のアイテムを右/下に移動するための正しい方法です。

別の方法は、制約ベースのレイアウトです。これは、コンテンツを左に固定する場合に適しています。親としてキャンバスを使用し、子で「right='0'」を設定してコンテンツを右端に配置します。サイズに基づいて複数のアイテムを積み重ねる場合、これはあまり理想的ではありません。バインディング「right='{noComponent.width}」を使用して、「いいえ」のすぐ右側に「はい」を配置できます。

于 2010-01-27T22:24:23.567 に答える