复选框无法在Flex中正确显示

时间:2011-08-04 19:06:34

标签: flex user-interface flash-builder flex4.5

我有一个复选框,不会呈现为复选框,并且会显示为类似于按钮的内容。但是,它的行为就像一个复选框,我可以选择它,处理程序可以使用触发事件。

这是我的复选框。我也在or之外尝试过,但它有相同的行为。与复选框或我正在处理的部分有关的无CSS 。我虽然使用 Flex 4.5

1-有人遇到过这样的问题吗?

2-有没有办法在容器和项呈示器中强制执行布局?

<mx:HBox>
    <mx:CheckBox id="Test"
        label="Label"
        fontWeight="bold"                                
                change="Test_changeHandler(event)"/>        
</mx:HBox>

4 个答案:

答案 0 :(得分:4)

如果您使用的是Flex 4.5,为什么使用Flex 3组件?将此更改为spark组件,一切都应该更好:

<s:HGroup>
    <s:CheckBox id="Test"
        label="Label"
        fontWeight="bold"                                
                change="Test_changeHandler(event)"/>        
</s:HGroup>

答案 1 :(得分:3)

mx:CheckBox扩展mx:Button,因此,如果您添加了已加盖的mx:Button的css,mx:CheckBox也会获得它。这是flex 3皮肤的缺点。您可以通过明确设置mx:CheckBox皮肤来解决此问题。


编辑:试试这个

<mx:HBox>
    <mx:CheckBox id="Test"
        label="Label"
        fontWeight="bold"                                
        skin="{mx.skins.spark.CheckBoxSkin}"
        change="Test_changeHandler(event)"
        />        
</mx:HBox>

答案 2 :(得分:1)

这也发生在我身上。修复是在弹出组件上使用mx:Container作为父级而不是FlexGlobals.application。

答案 3 :(得分:0)

第二个问题:

我有完全相同的问题,我强迫它采取“原始”皮肤:

var skinClass:Class = mx.skins.spark.CheckBoxSkin;
theCheckBoxInstance.setStyle("skin", skinClass);

因为在我的情况下,CheckBox是DataGrid的ItemRenderer,所以我在超级调用之后立即将它放在重写的createChildren方法中。

我没有解释为什么会这样。我在一个古老的怪物项目中遇到过它,我被指控做出一些改变......