自定义组件中的 RadioButton 功能

Posted

技术标签:

【中文标题】自定义组件中的 RadioButton 功能【英文标题】:RadioButton functionality in custom component 【发布时间】:2018-06-09 17:12:22 【问题描述】:

我正在尝试创建一个包含图像和单选按钮的 xml 组件。 主应用程序脚本将使用其中几个组件。

我在尝试使 RadioGroup 正常运行时遇到问题。 我在组件 mxml 文件中的 RadioButton groupName 属性上绑定了一个变量,因此我可以在主应用程序脚本中设置它。

当我浏览每个 RadioGroup 时,此功能正常,只有每个组的第一个单选按钮获得焦点。 但是当我单击组中的每个单选按钮时,前一个不会取消选择。

我已经读到我无法绑定组件 ID,那么我还能如何实现在每个组中只选择一个单选按钮? 我需要实现 IFocusManager 吗?

谢谢

【问题讨论】:

【参考方案1】:

每组 RadioButtons 都需要一个 RadioButtonGroup 分配给 groupName。 RadioButtonGroup 确保一次只选择 1 个按钮。 RadioButtonGroup 在<fx:Declarations> 中声明,是在 groupName 属性中分配的 RadioButtonGroup 的名称。

    <fx:Declarations>
        <s:RadioButtonGroup id="paymentType" itemClick="handlePayment(event);"/>
    </fx:Declarations>
    <s:VGroup paddingLeft="10" paddingTop="10">
        <s:RadioButton groupName="paymentType" 
                       id="payCheck" 
                       value="check" 
                       label="Pay by check" 
                       />
        <s:RadioButton groupName="paymentType" 
                       id="payCredit" 
                       value="credit" 
                       label="Pay by credit card" 
                       />
    </s:VGroup>

Apache Flex 参考:http://flex.apache.org/asdoc/spark/components/RadioButtonGroup.html

【讨论】:

谢谢。通过进一步阅读,我了解到我必须实现 IFocusManagerGroup 接口,然后为 selected 和 groupName 实现 get 和 set 函数。我已经设法实现 groupName 但我在选择时遇到问题。哪个组件负责在同一组名中的所有单选按钮上调用选定的方法?我需要知道这一点,以便我可以在我自己的自定义组件中反映此功能。 如果您正在滚动自己的 RadioGroup 实现,那么您应该扩展您的类以包含 RadioButton 和 RadioButtonGroup,以便获得它们的功能。 请看下面的问题,它提供了一些代码,希望能解释我想要做什么 ----- ***.com/questions/48130522/… ---- 我试图将 skinnablecontainer 更改为 mx:UIComponent 但是然后我得到一个错误->“标签”声明必须包含在 标记中,因为它没有实现“mx.core.IUIComponent”。有什么想法吗?

以上是关于自定义组件中的 RadioButton 功能的主要内容,如果未能解决你的问题,请参考以下文章

自定义可自动换行的RadioButton组件

自定义可自动换行的RadioButton组件

自定义可自动换行的RadioButton组件

自定义可自动换行的RadioButton组件

带有 RadioButton 单选的自定义 ListView

安卓UI自定义radiobutton样式