Я хочу прописать каждое слово, набранное 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
}