在 Kotlin 中保存复选框之前的背景值

发布于 2025-01-09 01:47:31 字数 751 浏览 0 评论 0原文

我有一个停止按钮,可以将所有复选框变成红色。 当我选择一个复选框时,它会变成蓝色,当我取消选中它时,它会变成黑色。

我希望我的复选框在以前的颜色为红色时变成红色,并且我希望我的复选框在以前的颜色为黑色时变成黑色。

这是我现在用来更改颜色的代码。

更改选中的颜色

for (checkBox in checBoxes)
        {
            checkBox.setOnClickListener(View.OnClickListener {
                if (checkBox.isChecked) {
                    checkBox.setBackgroundResource(R.drawable.blue_button)
                } else {
                    checkBox.setBackgroundResource(R.drawable.black_button)
                }
            })

        }

停止按钮

stopBtn.setOnClickListener {
for (checkBox in checBoxes)
    {
      checkBox.setBackgroundResource(R.drawable.red_button)
    }

}

I have a stop button that turns all my checkboxes red.
When I select a checkbox it will turn blue, and when I uncheck it it will turn black.

I want my checkboxes to turn to red when their previous color was red and I want my checkboxes to turn black when their previous color was black.

This is the code I have right now to change the colors.

Change checked color

for (checkBox in checBoxes)
        {
            checkBox.setOnClickListener(View.OnClickListener {
                if (checkBox.isChecked) {
                    checkBox.setBackgroundResource(R.drawable.blue_button)
                } else {
                    checkBox.setBackgroundResource(R.drawable.black_button)
                }
            })

        }

Stop button

stopBtn.setOnClickListener {
for (checkBox in checBoxes)
    {
      checkBox.setBackgroundResource(R.drawable.red_button)
    }

}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

最舍不得你 2025-01-16 01:47:31

您可以创建布尔值来告诉用户是否单击了停止按钮,如下所示:

val isStopped = false

然后使您的 onClickListener lambda 函数如下所示:

stopBtn.setOnClickListener {
isStopped = true
for (checkBox in checBoxes)
    {
      checkBox.setBackgroundResource(R.drawable.red_button)
    }

}

然后:

for (checkBox in checBoxes)
        {
            checkBox.setOnClickListener(View.OnClickListener {
                if (checkBox.isChecked) {
                    checkBox.setBackgroundResource(R.drawable.blue_button)
                } else {
                if(isStopped)
                    checkBox.setBackgroundResource(R.drawable.red_button)
                else
                    checkBox.setBackgroundResource(R.drawable.black_button)
                }
            })

        }

You can create boolean that will tell if user have clicked stop button like this:

val isStopped = false

Than make your onClickListener lambda function like this:

stopBtn.setOnClickListener {
isStopped = true
for (checkBox in checBoxes)
    {
      checkBox.setBackgroundResource(R.drawable.red_button)
    }

}

And then:

for (checkBox in checBoxes)
        {
            checkBox.setOnClickListener(View.OnClickListener {
                if (checkBox.isChecked) {
                    checkBox.setBackgroundResource(R.drawable.blue_button)
                } else {
                if(isStopped)
                    checkBox.setBackgroundResource(R.drawable.red_button)
                else
                    checkBox.setBackgroundResource(R.drawable.black_button)
                }
            })

        }
遗失的美好 2025-01-16 01:47:31

这是我更新的代码@dženan-bećirović

停止按钮


stopBtn.setOnClickListener {
for (checkBox in checBoxes)
    {
      checkBox.setBackgroundResource(R.drawable.red_button)
      checkBoxBG = checkBox.background
    }

}

更改选中的颜色

for (checkBox in checBoxes)
        {
            checkBox.setOnClickListener(View.OnClickListener {
                if (checkBox.isChecked) {
                    checkBoxBG = checkBox.background
                    checkBox.setBackgroundResource(R.drawable.blue_button)
                } else {
                       when {
                        checkBoxBG?.getConstantState()?.equals(getDrawable(CheckboxColorStatus.RED.colorValue)?.getConstantState()) == true -> {
                            checkBox.setBackgroundResource(R.drawable.red_button)
                        }
                        checkBoxBG?.getConstantState()?.equals(getDrawable(CheckboxColorStatus.BLACK.colorValue)?.getConstantState()) == true -> {
                            checkBox.setBackgroundResource(R.drawable.black_button)
                        }
                        checkBoxBG?.getConstantState()?.equals(getDrawable(CheckboxColorStatus.YELLOW.colorValue)?.getConstantState()) == true -> {
                            checkBox.setBackgroundResource(R.drawable.yellow_button)
                        }
                    }
                }
            })

        }

This is my updated code @dženan-bećirović

Stop button


stopBtn.setOnClickListener {
for (checkBox in checBoxes)
    {
      checkBox.setBackgroundResource(R.drawable.red_button)
      checkBoxBG = checkBox.background
    }

}

Change checked color

for (checkBox in checBoxes)
        {
            checkBox.setOnClickListener(View.OnClickListener {
                if (checkBox.isChecked) {
                    checkBoxBG = checkBox.background
                    checkBox.setBackgroundResource(R.drawable.blue_button)
                } else {
                       when {
                        checkBoxBG?.getConstantState()?.equals(getDrawable(CheckboxColorStatus.RED.colorValue)?.getConstantState()) == true -> {
                            checkBox.setBackgroundResource(R.drawable.red_button)
                        }
                        checkBoxBG?.getConstantState()?.equals(getDrawable(CheckboxColorStatus.BLACK.colorValue)?.getConstantState()) == true -> {
                            checkBox.setBackgroundResource(R.drawable.black_button)
                        }
                        checkBoxBG?.getConstantState()?.equals(getDrawable(CheckboxColorStatus.YELLOW.colorValue)?.getConstantState()) == true -> {
                            checkBox.setBackgroundResource(R.drawable.yellow_button)
                        }
                    }
                }
            })

        }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文