【发布时间】:2021-02-07 21:50:45
【问题描述】:
我有一个只接受数字的 editText。 我有 4 种类型:日期、年份、数学、琐事。 我使用复选框在这些类型之间切换。
InputType 变化如下:
- 日期:null(用户将点击editText选择日期)年份,
- 数学,琐事:signed_number
默认情况下,输入类型设置为琐事,我只能输入数字,但是当我在我的类型之间切换至少一次时,我可以输入任何内容。它仅适用于 Date 类型。
处理这一切的监听器:
rgType.setOnCheckedChangeListener { _, checkedId ->
val checked = findViewById<RadioButton>(checkedId)
numType = when (checked.text) {
"Year" -> NumType.YEAR
"Date" -> NumType.DATE
"Math" -> NumType.MATH
else -> NumType.TRIVIA
}
tNumber.setText("")
tAnswer.text = ""
when (numType) {
NumType.DATE -> {
tNumber.hint = "CHOOSE A DATE"
tNumber.inputType = InputType.TYPE_NULL
tNumber.hideKeyboard()
}
NumType.YEAR -> {
tNumber.hint = "TYPE A YEAR"
tNumber.inputType = InputType.TYPE_NUMBER_FLAG_SIGNED
tNumber.hideKeyboard()
}
else -> {
tNumber.hint = "TYPE A NUMBER"
tNumber.inputType = InputType.TYPE_NUMBER_FLAG_SIGNED
tNumber.hideKeyboard()
}
}
Log.d("Input", tNumber.inputType.toString())
}
**更新代码:**
rgType.setOnCheckedChangeListener { _, checkedId ->
val checked = findViewById<RadioButton>(checkedId)
numType = when (checked.text) {
"Year" -> NumType.YEAR
"Date" -> NumType.DATE
"Math" -> NumType.MATH
else -> NumType.TRIVIA
}
tNumber.setText("")
tAnswer.text = ""
when (numType) {
NumType.DATE -> {
tNumber.hint = "CHOOSE A DATE"
tNumber.inputType = InputType.TYPE_NULL
tNumber.hideKeyboard()
}
NumType.YEAR -> {
tNumber.hint = "TYPE A YEAR"
tNumber.inputType = InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_FLAG_SIGNED
tNumber.hideKeyboard()
}
else -> {
tNumber.hint = "TYPE A NUMBER"
tNumber.inputType = InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_FLAG_SIGNED
tNumber.hideKeyboard()
}
}
Log.d("Input", tNumber.inputType.toString())
}
【问题讨论】:
标签: android kotlin android-edittext