4


0

右からHBoxに入力しますか? 下からVBox?

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

そのため、左からテキストをいくつか、右からラジオをいくつか並べるHBoxがあります。 そのようです:

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

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

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

私は、次のように右揃えになっている独自のHBoxにラジオを配置することを好みます。

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

horizo​​ntalAlignプロパティについて説明している投稿を見たことがありますが、ドキュメントには記載されていません。

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

ありがとう〜マイク

2 Answer


8


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

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

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


`horizo​​ntalAlign`が設定されたHBoxには幅の値が必要であることに注意してください。そうでない場合は、子の幅を収容するのに十分なだけの幅になります。

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

        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);
        }


4


レイアウトにすでにHBox / VBoxを使用している場合、Spacerを使用すると、特定のアイテムを右/下に移動することができます。

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