如果 EditText 字段中有文本,如何更改 backgroundtint 颜色?
Posted
技术标签:
【中文标题】如果 EditText 字段中有文本,如何更改 backgroundtint 颜色?【英文标题】:How do you change backgroundtint colour if there is text in EditText Field? 【发布时间】:2021-12-24 20:16:42 【问题描述】:下午好,我想在我的 editText 字段中有文本后触发我的按钮更改颜色,我想知道你如何不断地进行此检查,而不是片段启动一次?
我的片段代码
override fun onViewCreated(view: View, savedInstanceState: Bundle?)
super.onViewCreated(view, savedInstanceState)
navc = Navigation.findNavController(view)
registerObservers()
setListeners(view)
onTextChanged()
override fun onCreate(savedInstanceState: Bundle?)
setHasOptionsMenu(true)
super.onCreate(savedInstanceState)
requireActivity().onBackPressedDispatcher.addCallback(this)
navc!!.navigate(R.id.orderListFragment)
private fun registerObservers()
accountViewModel.profile.observe(viewLifecycleOwner)
private fun onTextChanged()
if (restaurantEmail.editableText.isNotEmpty())
sendhtmlcode.backgroundTintList = ColorStateList.valueOf(resources.getColor(R.color.standardOrange))
else
println("Testingprint")
sendHtmlcode.backgroundTintList = ColorStateList.valueOf(resources.getColor(R.color.standardGrey))
第一次上色时没有文字,但之后不再检查,我不明白为什么不检查
【问题讨论】:
【参考方案1】:您可以使用doOnTextChanged
函数来触发 EditText 中的每次文本更改。它在内部使用TextWatcher
。
editText.doOnTextChanged text, start, before, count ->
onTextChanged()
【讨论】:
【参考方案2】:你可以使用doOnTextChange
这是textView的kotlin扩展功能。
import androidx.core.widget.doOnTextChanged
yourEditText.doOnTextChange text, start, before, count ->
// here you check if the input is empty
onTextChanged(text.isNotEmpty())
private fun onTextChanged(isNotEmpty: Boolean)
if (isNotEmpty)
sendHtmlcode.backgroundTintList = ColorStateList.valueOf(resources.getColor(R.color.standardOrange))
else
println("Testingprint")
sendHtmlcode.backgroundTintList = ColorStateList.valueOf(resources.getColor(R.color.standardGrey))
【讨论】:
以上是关于如果 EditText 字段中有文本,如何更改 backgroundtint 颜色?的主要内容,如果未能解决你的问题,请参考以下文章
如何从另一个活动中编辑和获取 editText 输入字段的更新?