html单选按钮默认选中 radiobutton控件默认选中

在JetpackCompose中用于制作单选按钮的可组合函数名为RadioButton。单选按钮是用户可以选择的小圆形按钮。一次只能选择一个选项。下面向您介绍如何使用RadioButton,如何实现多个RadioButton中一次只能选择一个选项的效果。RadioButton(selected…

在Jetpack Compose中用于制作单选按钮的可组合函数名为RadioButton。单选按钮是用户可以选择的小圆形按钮。一次只能选择一个选项。下面向您介绍如何使用RadioButton,如何实现多个RadioButton中一次只能选择一个选项的效果。

RadioButton(selected = false, onClick = { /*TODO*/ })

我们用非常简洁的代码就创建了一个RadioButton,如下图:

RadioButton

此时的RadioButton没有任何的效果,也不能点击。

接下来,我们要为RadioButton添加一个点击状态并设置RadioButton的不同状态的样式。

val isSelected = remember {mutableStateOf(false)}
RadioButton(
    colors = RadioButtonDefaults.colors(
        selectedColor = selectedColor1,
        unselectedColor = unselectedColor1,
        disabledColor = disabledColor1
    ),
    enabled = true,
    selected = isSelected.value,
    onClick = { isSelected.value = !isSelected.value})

在上面的代码中,我们新建了一个isSelected变量来保存RadioButton的点击状态,使用colors设置RadioButton的样式,这里使用RadioButtonDefaults实例,并使用所需的背景色作为参数对其调用colors方法。

selectedColor:选中并启用时用于单选按钮的颜色

unselectedColor:未选择并启用时用于单选按钮的颜色。

disabledColor:禁用时用于单选按钮的颜色。

使用selected在“选定”和“未选定”之间切换按钮的当前状态。使用enabled控制单选按钮的启用状态。onClick单击RadioButton时要调用的回调,在回调中更改状态的值。如下图:

在Jetpack Compose中,RadioButton没有设置文字的属性,要想使其显示文字,就要使用组合项来实现。

val isSelected = remember {mutableStateOf(false)}
Row(
    modifier = Modifier.clickable {
        isSelected.value = !isSelected.value
    }) {
    RadioButton(
        colors = RadioButtonDefaults.colors(
            selectedColor = selectedColor1,
            unselectedColor = unselectedColor1,
            disabledColor = disabledColor1
        ),
        enabled = true,
        selected = isSelected.value,
        onClick = { isSelected.value = !isSelected.value })
    Spacer(modifier = Modifier.width(2.dp))
    Text(text = text)
}

在上面的代码中,我们在Row(线性水平)布局中添加了RadioButtonText两个组合项,实现RadioButton显示文字的效果,使用Spacer添加间隔,在RowModifier.clickable中,当点击整个布局也可以更改RadioButton的状态,如下图:

显示文字效果

我们知道在Android开发中向RadioGroup中添加多个RadioButton,可以实现多个选项中只有一个RadioButton选中的效果,但在Jetpack Compose中没有这样的实现,我们需要自己自定义一个组合。

@Composable
fun MyRadioButtonList(context: Context){
    val fruits = listOf("苹果", "枇杷", "樱桃", "草莓")
    val selectedButton = remember { mutableStateOf(fruits.first()) }

    Row() {
        fruits.forEach {
            val isSelected = it == selectedButton.value
            Row(
                verticalAlignment = Alignment.CenterVertically,
                modifier = Modifier.clickable(onClick = {
                    selectedButton.value = it
                    Toast.makeText(context, "您点击了${it}", Toast.LENGTH_SHORT).show()
                })
            ) {
                RadioButton(
                    colors = RadioButtonDefaults.colors(
                        selectedColor = selectedColor1,
                        unselectedColor = unselectedColor1,
                        disabledColor = disabledColor1
                    ),
                    selected = isSelected,
                    onClick = {
                        selectedButton.value = it
                        Toast.makeText(context, "您点击了${it}", Toast.LENGTH_SHORT).show()
                    })
                Spacer(modifier = Modifier.width(2.dp))
                Text(text = it)
            }
        }
    }
}

在上面的代码中,首先,我们新建了一个fruits集合,我们用集合中的选项表示每个单选按钮的索引。接下来,创建一个selectedButton状态,以记住当前选择的按钮。默认情况下,选择第一个按钮。使用for循环,在循环的每次迭代中向列添加一个RadioButton。每次循环的使用我们判断selectedButton的值是否是当前的RadioButton,然后将isSelected的赋给RadioButton,每次用户点击按钮时,您都会更改在状态中选择的按钮。这将触发重新编译,您的UI将更新!如下图:

默认情况下会选择第一个RadioButton。选择另一个RadioButton时,可以看到在RadioButton之间切换状态。这样就实现了我们的单选效果。

版权声明:本文内容由网友提供,该文观点仅代表作者本人。本站(http://www.zengtui.com/)仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 3933150@qq.com 举报,一经查实,本站将立刻删除。

版权声明:本文内容由作者小仓提供,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至907991599@qq.com 举报,一经查实,本站将立刻删除。如若转载,请注明出处:http://www.cangchou.com/241101.html

(0)
小仓的头像小仓

相关推荐

  • 烟花铜超七怎么辨别真假?

    烟花铜超七真假辨别指南 烟花铜超七,作为宝石界的一颗璀璨明星,以其独特的色彩和纹理吸引了众多爱好者的目光。然而,随着其受欢迎程度的提升,市场上也涌现出不少仿制品和次品。为了帮助大家…

    网络快讯 2024年2月27日
    0
  • 大写数字壹贰叁肆到拾怎么写,大写数字的写法(壹/贰/叁/肆/伍/陆/柒/捌/玖/拾)

    大写数字计数存在武则天当政时期,距今已有1300多年,是自古一直沿用到现在的计数方式,虽然解放后有些账目逐渐改用阿拉伯数字,但重要账目依旧使用大写数字,下面小编就来教教你大写数字壹贰叁肆到拾怎么写吧。大写数字壹贰叁肆到拾怎么写阿拉伯数字1、2、3、4、5、6、7、8、9、10用大写汉字表示为壹、贰、…

    2023年11月4日
    0
  • 三吏三别,分别是什么,三吏三别什么意思

      三吏三别,分别是什么,三吏三别什么意思是“三吏指的是《新安吏》、《潼关吏》和《石壕吏》;三别指的是《新婚别》、《无家别》和《垂老别》的。  关于三吏三别,分别是什么,三吏三别什么意思以及三吏三别,分别是什么,三吏三别分别是,三吏三别什么意思,三吏三别是哪三吏哪三别,三吏三别三吏指什么等问…

    网络快讯 2023年11月26日
    0
  • 自己怎么做草炭土 ?3分钟搞定配制方法与使用秘籍

    泥炭土究竟啥土?泥炭土又叫草炭土。泥炭土指的是在山林、河道、湖泊、池塘等地方积攒沉淀下来的土壤。这些地方的土壤因为长期积水,很多植物得不到完全分解,日积月累,慢慢形成了泥炭层。你猜想的没错,泥炭层的土壤可算是泥炭土。这些泥炭土非常适合用来养花、养盆景,但是最好不要单…

    网络快讯 2023年11月16日
    0
  • 新疆22日新增本土确诊病例8例 新增本土无症状感染者123例

    据新疆卫健委网站消息,10月22日0至24时,新疆维吾尔自治区新增确诊病例8例,其中,乌鲁木齐市天山区2例、沙依巴克区2例、高新区1例、米东区1例,伊犁州伊宁市2例。新增无症状感染者123例,其中,乌鲁木齐市天山区16例、沙依巴克区13例、高新区11例、水磨沟区13例、经开区6例、米东区10例,…

    网络快讯 2023年12月16日
    0
  • 马苏事件是啥事(马苏为什么被全网黑)

    各位伙伴们好,假如你对马苏事件是啥事,以及马苏为什么被全网黑不是很清楚,今天小编给大家解答一下你们心中的疑问。希望可以帮助到各位,下面就来解答关于马苏事件是啥事的问题,下面我们就来开始吧!文章目录1、马苏为什么被全网黑2、马苏事件是啥事花心玩小鲜肉心机深3、马苏事件到底咋回事…

    2023年12月18日
    0
  • 树叶画手工贴画制作(幼儿园手工:简单树叶贴画的三种常见制作方法)

    利用五颜六色形状各异的秋天树叶,简单拼接或修剪后组合,就是一幅漂亮的画。怎么简单制作树叶贴画?树叶贴画有三种常见的制作方法。材料:树叶(各种形状颜色)、铅笔、彩色记号笔、胶水、白色卡纸(纸张太薄的话使用胶水后会起皱)树叶贴画常见制作方法1、我们在这里给大家示范三种树叶画的制…

    网络快讯 2023年11月15日
    0
  • 女性湿锐尖的症状图片(女性尖锐湿尤图)

     女性湿锐尖的症状图片(女性尖锐湿尤图)点击输入图片描述(最多30字)本文由“南京优嘉病毒疣医学研究所”原创,仅供参考,如有必要请来院面诊。尖锐湿疣是由于人体的外阴生殖器或肛周等易感部位被HPV病毒侵犯而导致的。从感染HP…

    网络快讯 2023年12月1日
    0
  • 老庙18k金好还是黄金好,哪个更值得购买

    作为一种传统的贵金属,黄金一直以来都受到人们的喜爱。然而,近年来,随着人们的审美观念和消费习惯的改变,18k金也逐渐成为了一种备受追捧的珠宝材料。那么,老庙18k金和黄金之间到底哪个更值得购买呢?本文将从材质、款式、价格等方面进行分析,为您解答这一问题。一、材质黄金是一种贵金属,其成…

    网络快讯 2023年10月18日
    0
  • 黄金舒俱来是什么材质?黄金舒俱来是什么样子的?【띲띪띺띧】

    黄金舒俱来是一种珍贵的宝石,它是由舒俱来石和黄金材质混合制作而成。这种宝石的独特之处在于它结合了舒俱来石的神秘能量和黄金的贵重属性,具有独特的魅力和价值。舒俱来石是一种含有多种矿物质和微量元素的宝石,包括钠、铝、锂、硅、锰等元素。舒俱来石呈现出深浅不一的紫色、蓝色、红色和绿色等色彩,其中皇家紫和…

    网络快讯 2023年11月8日
    0

发表回复

登录后才能评论