gpt4 book ai didi

android - 如何使 Jetpack 撰写复选框四舍五入

转载 作者:行者123 更新时间:2023-12-04 23:48:28 24 4
gpt4 key购买 nike

如何在 Jetpackcompose 中创建圆形复选框,如 this .我尝试在其上使用可组合的形状,但它不起作用。

最佳答案

我正在研究如何做你所问的同样的事情,你的问题在我的旅程中帮助了我,所以我分享这是公平的。添加一些动画,你就成了我的 friend 。

  • 使用框和图标制作圆形图标
     Box(
    modifier = Modifier
    .clip(CircleShape)
    .size(40.dp)
    .background(Color.Black)
    .padding(3.dp)
    .clip(CircleShape)
    .background(Color.White),
    contentAlignment = Alignment.Center
    ) {

    Icon(imageVector = Icons.Default.Check, contentDescription = "")
    }

  • 2.使用Row将新制作的圆形图标和一些文本放在一起
     Row(
    verticalAlignment = Alignment.CenterVertically,
    ){
    Box(
    modifier = Modifier
    .clip(CircleShape)
    .size(40.dp)
    .background(Color.Black)
    .padding(3.dp)
    .clip(CircleShape)
    .background(Color.White),
    contentAlignment = Alignment.Center
    ) {

    Icon(imageVector = Icons.Default.Check, contentDescription = "")
    }

    Text(
    text = checkedText.value,
    color = color.value,
    fontSize = 20.sp,
    fontWeight = FontWeight.Medium,
    modifier = Modifier.padding(start = 5.dp)
    )
    }
    3.用变量替换你想要的任何东西,这样你就可以自定义
    @Composable
    fun RoundedCheckView(
    ) {

    val isChecked = remember { mutableStateOf(false) }
    val checkedText = remember { mutableStateOf("unChecked") }
    val circleSize = remember { mutableStateOf(20.dp) }
    val circleThickness = remember { mutableStateOf(2.dp) }
    val color = remember { mutableStateOf(Color.Gray) }

    Row(
    verticalAlignment = Alignment.CenterVertically,
    {
    Box(
    modifier = Modifier
    .clip(CircleShape)
    .size(circleSize.value)
    .background(color.value)
    .padding(circleThickness.value)
    .clip(CircleShape)
    .background(Color.White) ,
    contentAlignment = Alignment.Center
    ) {
    Icon(imageVector = Icons.Default.Check, contentDescription = "")
    }

    Text(
    text = checkedText.value,
    color = color.value,
    fontSize = 20.sp,
    fontWeight = FontWeight.Medium,
    modifier = Modifier.padding(start = 5.dp)
    )
    }
    }
    4.最后将 Modifier.toggleable 添加到行中,基本上使它成为一个可点击的项目,在这种情况下切换(在真和假之间)一个变量 isChecked。然后根据您的需要自定义变量
    @Composable

    fun RoundedCheckView()
    {
    val isChecked = remember { mutableStateOf(false) }
    val checkedText = remember { mutableStateOf("unChecked") }
    val circleSize = remember { mutableStateOf(20.dp) }
    val circleThickness = remember { mutableStateOf(2.dp) }
    val color = remember { mutableStateOf(Color.Gray) }
    Row(
    verticalAlignment = Alignment.CenterVertically,
    modifier = Modifier
    .toggleable(value = isChecked.value,role = Role.Checkbox) {
    isChecked.value = it

    if (isChecked.value) {
    checkedText.value = "Checked"
    circleSize.value = 40.dp
    circleThickness.value = 3.dp
    color.value = Color.Black
    } else {
    checkedText.value = "unChecked"
    circleSize.value = 20.dp
    circleThickness.value = 2.dp
    color.value = Color.Gray
    }
    }) {
    Box(
    modifier = Modifier
    .clip(CircleShape)
    .size(circleSize.value)
    .background(color.value)
    .padding(circleThickness.value)
    .clip(CircleShape)
    .background(Color.White) ,
    contentAlignment = Alignment.Center
    ) {
    if(isChecked.value){
    Icon(imageVector = Icons.Default.Check, contentDescription = "")
    }
    }

    Text(
    text = checkedText.value,
    color = color.value,
    fontSize = 20.sp,
    fontWeight = FontWeight.Medium,
    modifier = Modifier.padding(start = 5.dp)
    )
    }
    }

    关于android - 如何使 Jetpack 撰写复选框四舍五入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67359701/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com