下午好,我想在我的 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))
}
它第一次在沒有文字的情況下著色,但之后它不再檢查,我不明白為什么不
uj5u.com熱心網友回復:
您可以使用doOnTextChanged每次 EditText 中的文本更改時觸發的函式。它在內部使用一個TextWatcher.
editText.doOnTextChanged { text, start, before, count ->
onTextChanged()
}
uj5u.com熱心網友回復:
您可以使用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))
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/359610.html
