Привет Мне нужны пробелы после 2-го, 6-го и 10-го символа в текстовом редакторе String как пользовательский тип. Например, если пользователь вводит 51824753553 в тексте редактирования, поэтому при изменении текста текст редактирования должен отображать значения как 51 824 753 553. Я искал хорошие решения для этого, но в итоге нашел это решение, которое, как мне кажется, является единственным.
mBinding?.txtAbncode?.addTextChangedListener(object : TextWatcher {
override fun afterTextChanged(s: Editable) {
var inputlength = mBinding?.txtAbncode?.text.toString().length
if (count <= inputlength && (inputlength == 2 || inputlength == 6 || inputlength == 10)){
mBinding?.txtAbncode?.setText(mBinding?.txtAbncode?.text.toString()+" ")
var pos = mBinding?.txtAbncode?.text!!.length
mBinding?.txtAbncode?.setSelection(pos)
}
else if(count >= inputlength &&(inputlength == 3 ||
inputlength == 7 || inputlength == 11)){
mBinding?.txtAbncode?.setText(mBinding?.txtAbncode?.text.toString().substring(0,mBinding?.txtAbncode?.text.toString().length-1))
var pos = mBinding?.txtAbncode?.text?.length
mBinding?.txtAbncode?.setSelection(pos!!)
}
count = mBinding?.txtAbncode?.text.toString().length
}
override fun beforeTextChanged(s: CharSequence, start: Int,
count: Int, after: Int) {
}
override fun onTextChanged(s: CharSequence, start: Int,
before: Int, count: Int) {
}
})
count равно 0, которое объявлено сверху. Но это решение прекрасно работает, когда я вставляю символ. но когда я удаляю символы до 2-го, 6-го и 10-го символов, а затем возобновляю ввод текста, добавление пробелов не работает.
Пожалуйста, помогите мне с некоторыми объяснениями. Я понял блок «если», который добавляет пробелы, но что «еще» делает в этом. Мой. xml файл редактируемого текста:
<EditText
android:id="@+id/txtAbncode"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="51 824 753 553"
android:maxLines="1"
android:background="@null"
android:inputType="number"
android:maxLength="14"
android:text="@{profileViewModel.profileModel.abnNumber}"
android:textSize="@dimen/txt_normal"
android:textColor="@android:color/white"
android:textColorHint="#80FFFFFF"
app:fontFamily="@font/sf_pro_text_bold"/>