如何解决以编程方式更改inputType后,EditText允许任何操作
我有一个 editText ,它仅接受数字。 我输入了4种类型:日期,年份,数学,琐事。 我使用复选框在这些类型之间切换。
InputType 的更改如下:
- 日期:空(用户将点击editText来选择日期)Year
- 琐事算术:signed_number
默认情况下,输入类型设置为Trivia,并且我只能键入数字,但是当我在类型之间至少切换一次时,我可以键入任何内容。它仅适用于日期类型。
处理所有这些的监听器:
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())
}
解决方法
只有4种输入类型:
InputType.TYPE_CLASS_DATETIME
InputType.TYPE_CLASS_NUMBER
InputType.TYPE_CLASS_PHONE
InputType.TYPE_CLASS_TEXT
所有其他均为标志。如果要设置标志,则必须使用or
运算符。
例子:
tNumber.inputType = InputType.TYPE_CLASS_DATETIME or InputType.TYPE_DATETIME_VARIATION_DATE
tNumber.inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS or InputType.TYPE_TEXT_FLAG_MULTI_LINE
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。