【发布时间】:2020-02-07 17:43:48
【问题描述】:
我想将在EditText 中输入的每个单词大写在onTextChanged 中。我尝试了一些解决方案,但都没有奏效。我面临的问题是,如果您在键盘上更改大写字母并且您将输入James JoNEs,它应该在您将E 字符输入Jone 后将该字符串修复为正确的形式。这不适用于默认 android:inputType="textCapWords"。我使用了一些我发现的功能,但它根本不起作用。
fun onFieldChanged(s: String, tv: TextWatcher, et: EditText) {
et.removeTextChangedListener(tv)
val changedString = capitalizeFirstLetterWord(s)
with(et) {
text.clear()
append(changedString)
setSelection(changedString.length)
}
et.addTextChangedListener(tv)
}
fun capitalizeFirstLetterWord(s: String): String{
var finalStr = ""
if(s != "") {
val strArray = s.split("[\\s']")
if (strArray.isNotEmpty()) {
for(i in strArray.indices){
finalStr+= capitalize(strArray[i])
}
}
}
return finalStr
}
【问题讨论】:
-
请参阅此answer link。你会发现 2 种方法。
标签: android kotlin android-edittext