专栏首页C++核心准则原文翻译自学鸿蒙应用开发(38)- 修改RadioButton默认动作

自学鸿蒙应用开发(38)- 修改RadioButton默认动作

鸿蒙系统中RadionButton的默认动作是点击某个选项时出现选中标记,再次点击时取消选中状态,表现如下面视频中的第一排RadioButton。有时可能希望再次点击时可以维持选中状态,就像下面视频中第二排RadioButton那样。

布局文件

文件中简单地放置了两个包含3个RadioButton的RadioContainer。

<?xml version="1.0" encoding="utf-8"?>
<DirectionalLayout
    xmlns:ohos="http://schemas.huawei.com/res/ohos"
    ohos:height="match_parent"
    ohos:width="match_parent"
    ohos:orientation="vertical">
    <RadioContainer
        ohos:id="$+id:radio_container1"
        ohos:height="match_content"
        ohos:width="match_content"
        ohos:top_margin="32vp"
        ohos:orientation="horizontal"
        ohos:layout_alignment="horizontal_center">
        <RadioButton
            ohos:id="$+id:radio_button_1"
            ohos:height="40vp"
            ohos:width="match_content"
            ohos:text="A.Learning"
            ohos:text_size="14fp"/>
        <RadioButton
            ohos:id="$+id:radio_button_2"
            ohos:height="40vp"
            ohos:width="match_content"
            ohos:text="B.Innovation"
            ohos:text_size="14fp"/>
        <RadioButton
            ohos:id="$+id:radio_button_3"
            ohos:height="40vp"
            ohos:width="match_content"
            ohos:text="C.Benefit"
            ohos:text_size="14fp"/>
    </RadioContainer>
    <RadioContainer
        ohos:id="$+id:radio_container2"
        ohos:height="match_content"
        ohos:width="match_content"
        ohos:top_margin="32vp"
        ohos:orientation="horizontal"
        ohos:layout_alignment="horizontal_center">
        <RadioButton
            ohos:id="$+id:radio_huawei"
            ohos:height="60vp"
            ohos:width="match_content"
            ohos:text="H.Huawei"
            ohos:text_size="14fp"/>
        <RadioButton
            ohos:id="$+id:radio_xiaomi"
            ohos:height="60vp"
            ohos:width="match_content"
            ohos:text="X.Xiaomi"
            ohos:text_size="14fp"/>
        <RadioButton
            ohos:id="$+id:radio_oppo"
            ohos:height="60vp"
            ohos:width="match_content"
            ohos:text="O.Oppo"
            ohos:text_size="14fp"/>
    </RadioContainer>
</DirectionalLayout>

修改RadionButton的行为

下面的代码在RadioButton的选中状态发生变化时修改按钮是否接受单击的属性。

public class MainAbilitySlice extends AbilitySlice {
    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        super.setUIContent(ResourceTable.Layout_ability_main);
        AbsButton.CheckedStateChangedListener listener = new AbsButton.CheckedStateChangedListener() {
            @Override
            public void onCheckedChanged(AbsButton absButton, boolean b) {
                absButton.setClickable(!b);
            }
        };
        RadioButton rb1 = (RadioButton)findComponentById(ResourceTable.Id_radio_huawei);
        rb1.setCheckedStateChangedListener(listener);
        RadioButton rb2 = (RadioButton)findComponentById(ResourceTable.Id_radio_xiaomi);
        rb2.setCheckedStateChangedListener(listener);
        RadioButton rb3 = (RadioButton)findComponentById(ResourceTable.Id_radio_oppo);
        rb3.setCheckedStateChangedListener(listener);
    }
}

参考代码

完整代码可以从以下链接下载:

https://github.com/xueweiguo/Harmony/tree/master/RadioButtonTest

作者著作介绍

《实战Python设计模式》是作者去年3月份出版的技术书籍,该书利用Python 的标准GUI 工具包tkinter,通过可执行的示例对23 个设计模式逐个进行说明。这样一方面可以使读者了解真实的软件开发工作中每个设计模式的运用场景和想要解决的问题;另一方面通过对这些问题的解决过程进行说明,让读者明白在编写代码时如何判断使用设计模式的利弊,并合理运用设计模式。

本文分享自微信公众号 - 面向对象思考(OOThinkingDalian),作者:面向对象思考

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-04-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 自学鸿蒙应用开发(27)- 默认的ListDialog

    对话框的用途除了表示信息供用户判断之外,还可以用来让用户从多个选项中选择自己需要的内容,这时就该ListDialog出场了:

    面向对象思考
  • 自学鸿蒙应用开发(11)- RadioButton和RadioContainer

    本文介绍在鸿蒙应用中RadioButton和RadioContainer组件的基本用法。

    面向对象思考
  • 鸿蒙OS开发流程及DevEco Studio安装

    兮动人
  • 自学鸿蒙应用开发(31)- 为UI组件定义描画动作

    UI组件的描画动作由应用架构触发,而自定义组件的开发者只要实现并登录描画接口即可。

    面向对象思考
  • 我的HarmonyOS实战——鸿蒙系统开发入门学习

    安卓操作系统连接外部设备时,发现,配对,连接,组合,验证每一步都不能少。连接上了之后才能调用控制第三方设备。换一个设备之后,所有的代码需要重写。所有用安卓也可以...

    天道Vax的时间宝藏
  • 自学鸿蒙应用开发(36)- 根据状态修改Swtich组件的文字颜色

    代码中可以使用setTextColor为组件中表示状态的文字颜色。但是问题是选中和非选中文字的颜色会同时改变。如果调查Switch的文档的话可以发现继承自Abs...

    面向对象思考
  • 自学鸿蒙应用开发(21)- 分组处理按钮操作

    计算器程序的第一步是首先输入需要求值的表达式,以下是本款计算器软件输入表达式时的状态:

    面向对象思考
  • 鸿蒙 HAIWEI DevEco Studio 安装配置,运行Hello World!

    2020年9月10日,华为在HDC开发者大会上如约发布鸿蒙 2.0,并面向应用开发者发布Beta版本。明年鸿蒙将全面支持华为手机。

    晨曦_LLW
  • 这就是鸿蒙系统?

    我手头使用的是一部华为Mate 20 pro手机,快三年时间了。作为一名数码爱好者,对于系统升级非常积极,每次收到系统更新通知,都会在第一时间升级。这次鸿蒙系统...

    云水木石
  • 抢先学鸿蒙(HarmonyOS)2.0,你就是下一个大咖!

    2020年9月10日,华为开发者大会发布了鸿蒙(HarmonyOS)2.0。HarmonyOS是全场景操作系统。也就是说,从理论上,HarmonyOS可以在任何...

    蒙娜丽宁
  • APK成为历史!鸿蒙系统或被禁止兼容?

    据外媒 SlashGear报道,Google Play 应用商店正在不断发展,以满足安卓用户和开发者不断增长的需求和要求。其中许多改进依赖于由人工智能和机器学习...

    程序IT圈
  • HarmonyOS与Android的全面对比

    第二是我个人非常看好鸿蒙系统的未来,清楚明白华为和一些民族企业担负的责任和国人的期待,虽然带着一些民族感情;鸿蒙刚发布的时候自己是非常激动的,但是后来项目太忙一...

    肉眼品世界
  • 韦东山-首批华为鸿蒙系统课程开发者

    昨天下午,在华为开发者大会 2020 上,华为消费者业务 CEO 余承东宣布推出鸿蒙 OS 2.0 (HarmonyOS 2.0),正式面向应用开发者发布鸿蒙 ...

    韦东山
  • “开辟鸿蒙 ” - 鸿蒙系统应用开发尝鲜

    第一次知道“鸿蒙”这个词,是在《红楼梦》的开篇引子。鸿蒙,在古典文化中,表示宇宙形成前的混沌状态,意为开天辟地之前。

    极客人
  • 前端视角看HarmonyOS

    公元 2021 年 6 月 2 日,【 HarmonyOS2.0 】正式发布,以 JavaScript 作为 IoT 应用开发的架构语言,这是继 SpaceX ...

    公众号@魔术师卡颂
  • Harmony OS 2.0 与 Android 的困惑

    谷歌如何限制华为?停止商业合作,(1)禁用GMS套件 (2)不能获取更新与适配优化

    Erossssssss
  • 【鸿蒙OS最新进展】鸿蒙内核liteos-a体验

    上周鸿蒙2.0开源,想必很多人都想第一时间体验。 今天,百问网发布鸿蒙IMX6ULL烧写工具以及鸿蒙体验手册,欢迎下载体验。

    韦东山
  • 用鸿蒙跑了个 “hello world”!鸿蒙开发初体验

    最近华为鸿蒙OS 2.0正式开源!关于鸿蒙的教程其实网上也已经有一些尝鲜的小伙伴分享的相关文章了,编者我按照步骤一步步跑下来,整个流程还是非常简单的,尤其是对A...

    崔庆才
  • 鸿蒙内核开发概述

    Bootloader、内核、APP等等软件,需要在Ubuntu中编译;但是阅读、修改这些源码时,在Windows下会比较方便。 所以,我们需要在Windows...

    韦东山

扫码关注云+社区

领取腾讯云代金券