如何解决如何将何时/如果添加到按钮viewBinding
我正在尝试将 when 或 if 语句添加到我的代码中。例如,一旦我按下第一个/第二个按钮,它就会将 button,button2 的颜色更改为红色。如果我只是按下按钮 3,它就会变成绿色。如果还有更简单的方法,我正在寻找它。
`binding.button.isSelected
binding.button.setOnClickListener {
binding.button.setBackgroundColor(R.drawable.red)
}
binding.button2.isSelected
binding.button2.setOnClickListener {
binding.button2.setBackgroundColor(R.drawable.red)
}
binding.button3.isSelected
binding.button3.setOnClickListener {
binding.button3.setBackgroundColor(R.drawable.green)
}`
编辑
感谢@Tonnie,我确实弄清楚了,我必须更改几行才能按预期工作。这是代码;
var isRedButtonsClicked = true
var isGreenButtonClicked = true
fun colorButtonsRed() {
binding.button.setBackgroundColor(R.color.red)
binding.button2.setBackgroundColor(R.color.red)
}
fun colorButtonGreen() {
binding.button3.setBackgroundColor(R.color.green)
}
binding.button.setOnClickListener {
when (isRedButtonsClicked) {
true -> colorButtonsRed()
}
}
binding.button2.setOnClickListener {
when (isRedButtonsClicked) {
true -> colorButtonsRed()
}
}
binding.button3.setOnClickListener {
when (isGreenButtonClicked) {
true -> colorButtonGreen()
}
}
setContentView(binding.root)
解决方法
@Gabe Sechan 是对的。您应该将 setBackgroundColor()
与颜色常量一起使用。
我不确定 isSelected
打算做什么,但此代码应该可以工作。
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val binding = ActivityMainBinding.inflate(layoutInflater)
binding.button.setOnClickListener {
binding.button.setBackgroundColor(Color.RED)
}
binding.button2.setOnClickListener {
binding.button2.setBackgroundColor(Color.RED)
}
binding.button3.setOnClickListener {
binding.button3.setBackgroundColor(Color.GREEN)
}
setContentView(binding.root)
}
快乐编码。
,我明白了,你需要按钮同时工作。
在这种情况下,请尝试构建此代码以满足您的需求。
- 首先创建一个
var
,我将其命名为isRedButtonsSelected
以进行监控 按钮状态。 - 添加 2 个函数来切换颜色 btw
Green/Red
和Gray
(或任何 您选择的颜色) - 添加 3 个 onClickListeners 以更改按钮颜色
代码
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
private var isRedButtonsClicked = false
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
binding.button.setOnClickListener {
when (isRedButtonsClicked) {
true -> colorButtons()
false -> unColorButtons()
}
}
binding.button2.setOnClickListener {
when (isRedButtonsClicked) {
true -> colorButtons()
false -> unColorButtons()
}
}
binding.button3.setOnClickListener {
when (isRedButtonsClicked) {
true -> colorButtons()
false -> unColorButtons()
}
}
setContentView(binding.root)
}
private fun colorButtons() {
binding.button.setBackgroundColor(Color.GRAY)
binding.button2.setBackgroundColor(Color.GRAY)
binding.button3.setBackgroundColor(Color.GREEN)
isRedButtonsClicked = false
}
private fun unColorButtons() {
binding.button.setBackgroundColor(Color.RED)
binding.button2.setBackgroundColor(Color.RED)
binding.button3.setBackgroundColor(Color.GRAY)
isRedButtonsClicked = true
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。