我如何添加何时/如果到按钮(viewBinding)
Posted
技术标签:
【中文标题】我如何添加何时/如果到按钮(viewBinding)【英文标题】:how can I add when/if to buttons (viewBinding) 【发布时间】:2021-08-24 02:23:27 【问题描述】:我正在尝试将 when 或 if 语句添加到我的代码中。例如,一旦我按下第一个/第二个按钮,它会将按钮、按钮 2 的颜色更改为红色。如果我只是按下按钮 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)
【问题讨论】:
这是最简单的方法。我不确定你为什么在那里有 isSelected 调用,除非你遗漏代码,否则我认为它不会做任何事情。您的代码中唯一的问题是 setBackgroundColor 采用颜色常量,而不是可绘制对象 @Talha,你学得很快,编辑得很好。欢迎来到*** 【参考方案1】:我明白了,你需要按钮同时工作。
在这种情况下,请尝试构建此代码以满足您的需求。
首先创建一个var
,我将其命名为isRedButtonsSelected
来监控
按钮状态。
添加 2 个函数来切换颜色 btw Green/Red
和 Gray
(或任何
您选择的颜色)
添加 3 个 onClickListener 来更改按钮颜色
代码
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
【讨论】:
谢谢你,我做到了并编辑了我的帖子。我不得不更改几行,多亏了你,我才弄明白了!【参考方案2】:@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)
【讨论】:
感谢您的努力,但这仍然不是我想要的。在这种情况下,只有一个按钮起作用。我想同时把“button”和“button2”的颜色改成红色。以上是关于我如何添加何时/如果到按钮(viewBinding)的主要内容,如果未能解决你的问题,请参考以下文章
您何时需要为标签和按钮添加内容以防止它们占用文本字段的空间?