MXML:组合框宽度大于父宽度

时间:2009-12-02 15:02:50

标签: flex mxml

我有一个宽度设置为100%的组合框。然而,当其中一个元素更大时,组合框也会变大,在我的应用程序中创建滚动条和其他丑陋! 如何保持组合框中包含的组合框?
注意,如果关闭的组合框保持较小,则下降的列表会更大。

样品:

<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="100%" height="100%">
<!-- I'm using a Canvas instead of a VBox because the VBox spaces the elements too far appart -->
    <mx:HBox id="tagsHBox" width="{formsHBox.width - 16}" x="8" y="8">
        <!-- This label should align with the labels in the left form -->
        <mx:Label text="Tags" id="tabLabel" width="{titleTxt.x + 4}" textAlign="right" />
        <!-- This textbox should spread accross both forms, that's why it's in a seperate HBox -->
        <mx:TextInput height="20" width="100%" />
    </mx:HBox>

    <mx:HBox id="formsHBox" x="8" y="{8 + tagsHBox.height}" width="{this.width-16}">

        <mx:Form id="leftForm" width="50%">
            <!-- Personal details -->
            <mx:FormHeading label="Personal Details" width="100%" />
            <mx:FormItem label="First name" width="100%">
                <mx:TextInput text="{person.firstName}" width="100%"/>
            </mx:FormItem>
            <mx:FormItem label="Last name" width="100%">
                <mx:TextInput text="{person.lastName}" width="100%"/>
            </mx:FormItem>
            <!-- And 15 more formItems :) -->
        </mx:Form>

        <mx:Form id="rightForm" width="50%">
            <!-- Address -->
            <mx:FormHeading label="Address" width="100%" />
            <mx:FormItem label="Street" width="100%">
                <mx:TextInput text="{person.address.street}" width="100%"/>
            </mx:FormItem>
            <mx:FormItem label="City" width="100%">
                <mx:TextInput text="{person.address.city}" width="100%"/>
            </mx:FormItem>

            <mx:FormItem label="Country" width="100%">

                <!-- This combobox right here is the troublemaker. There's a
                     country named 'South Georgia and the South Sandwich
                     Islands' consising of a few small islands in the southern
                     pacific and a name which is too long for my innocent
                     unsuspecting combobox --> 
                <form:ComboBox id="countryCombo" height="20" width="100%"  
                        dataProvider="{model.systemDataModel.countries}" />
            </mx:FormItem>
            <!-- And 15 more formItems :) -->
        </mx:Form>
    </mx:HBox>
</mx:Canvas>

3 个答案:

答案 0 :(得分:3)

您可以使用minWidth代替。将其设置为零或其他一些低值。我知道它适用于像HBox和VBox这样的容器使它们比它们的父容器停止生长更大,因此它也可以与ComboBox一起使用。基本上,会发生的是minWidth =“0”会覆盖measuredMinWidth,这是父容器通常认为的最小可能大小的值,并且可能大于容器自己的边界。

答案 1 :(得分:2)

我有同样的问题,我很容易解决。我有一个国家comboBox和一个状态comboBox组件,并动态填充国家名称和另一个与状态相关...我有一个HBox内的两个表单显示“两列像”表单,在右侧表单内有一个formItem并且在formItem里面有comboBox。问题是当我给comboBox提供了dataProvider然后出现了scrollBars而且非常恶心......

解决方案:我向您展示了正确的表单,因为它是问题(Form中的autoLayout =“false”,ComboBox定义中的minWidth =“0”)

<mx:Form autoLayout="false" verticalGap="12">
    <mx:FormItem label="Country" required="false" width="100%" direction="vertical">
        <mx:ComboBox id="countryComboBox" minWidth="0" width="100%" labelField="@name"/>
    </mx:FormItem>
    <mx:FormItem label="State" required="false" width="100%" direction="vertical">
        <mx:ComboBox id="stateComboBox" minWidth="0" width="100%" labelField="@name"/>
</mx:FormItem>
</mx:Form>

答案 2 :(得分:0)

你可以使用绝对大小(以像素为单位)的maxWidth属性,但是组合框项目的一部分(比组合框大)会被裁剪。

来自adobe: 组合框默认大小: 宽度足以容纳主控制器显示区域下拉列表中的最长条目,以及下拉按钮。当下拉列表不可见时,默认高度基于标签文本大小。